【问题标题】:Run php script as systemd service in centos7在centos7中将php脚本作为systemd服务运行
【发布时间】:2015-10-09 19:09:19
【问题描述】:

我正在尝试在 centos7 启动时运行 phpscript。目前 systemd 进程如下所示

[Unit]
Description=custom Service
After=network.target

[Service]
Type=forking
User=root
ExecStart=/usr/bin/php /var/www/htdocs/mysite/public/index.php abc xyz >> /var/log/custom.log 2>&1 


[Install]
WantedBy=multi-user.target

但是上面的脚本没有传递参数。我该如何解决这个问题?谢谢!

【问题讨论】:

  • 将这些作为普通参数传递 o_O
  • var_dump($argv); 这将帮助我们做得更好
  • 正常参数是什么意思?
  • 从 linux 命令行执行 /usr/bin/php /var/www/htdocs/mysite/public/index.php abc xyz 按预期工作。只有 systemd 脚本不起作用。

标签: php centos7 systemd


【解决方案1】:

作为替代方案,我创建了一个 myphp.sh bash 脚本

#!/bin/bash
nohup /usr/bin/php /var/www/htdocs/mysite/public/index.php abc xyz & >> /var/log/custom.log 2>&1

然后在 systemd 脚本中

[Unit]
Description=custom Service
After=network.target

[Service]
Type=forking
User=root
ExecStart=/etc/init.d/myphp.sh

[Install]
WantedBy=multi-user.target

【讨论】:

    【解决方案2】:

    试试这个配置

    [Service]
    Type=forking
    User=root
    PHP_PARAM_1=abc
    PHP_PARAM_2=xyz
    ExecStart=/usr/bin/php /var/www/htdocs/mysite/public/index.php $PHP_PARAM_1 $PHP_PARAM_2>> /var/log/custom.log 2>&1 
    

    更新

    [Service]
    Type=forking
    User=root
    Environment="abc xyz"
    ExecStart=/usr/bin/php /var/www/htdocs/mysite/public/index.php $PHP_PARAM_1 $PHP_PARAM_2>> /var/log/custom.log 2>&1 
    

    【讨论】:

    • ExecStart 不支持重定向等 shell 功能。这就是将传递给execve() 的内容,它只是程序的路径和参数列表,以空格分隔。这就是为什么这不起作用。
    【解决方案3】:

    这只是一种预感,但我认为 ExecStart 选项中的前缀 (/usr/bin/php ...) 会打乱参数顺序,这就是为什么你不能正确使用这些参数的原因。我怀疑你可以通过在你的 php 脚本中使用 shebang 来缓解这个问题:

    #!/usr/bin/php
    <?php
    
    // YOUR PHP CODE HERE
    

    您还需要为文件添加执行权限。这样,您可以像使用任何其他 shell 脚本一样使用 php 脚本,因此您可以简单地省略 ExecStart 参数中的前缀部分:

    ExecStart=/var/www/htdocs/mysite/public/index.php $PHP_PARAM_1 $PHP_PARAM_2 >> /var/log/custom.log 2>&1 
    

    【讨论】:

      猜你喜欢
      • 2017-08-01
      • 1970-01-01
      • 1970-01-01
      • 2021-06-21
      • 1970-01-01
      • 2019-08-19
      • 1970-01-01
      • 1970-01-01
      • 2019-08-18
      相关资源
      最近更新 更多