从cpanel crontab调用/ usr / bin / php总是给出而不是cgi-fcgi

时间:2016-05-26 13:31:40

标签: php ssh cron

我正在使用此/usr/bin/php -q /home/user/public_html/cron.php 我是cron.php文件的前面var_dump(PHP_SAPI); 当我从http调用时以及从ssh crontab调用时,它给了我cgi-fcgi

我看到了这个答案https://stackoverflow.com/a/19917512/1377781 我将cron命令更改为/usr/bin/php5-cli -q /home/user/public_html/cron.php

它的工作正常,是吗?它会在所有主机上运行吗?和环境?

1 个答案:

答案 0 :(得分:0)

不一定,没有。

无法保证每个主机或环境都具有相同的PHP二进制路径和名称。就像我可以在Windows系统上将MSWord.exe重命名为foobar.exe一样,我可以在* nix系统上将我的PHP二进制文件重命名为foobar,这一切都是相同的。

通常(但并非总是如此)您的二进制文件存储在* nix系统上的/usr/bin/usr/local/bin中。因此,您可以查看(例如ls -lah /usr/bin/php*ls -lah /usr/local/bin/php*),并使用/path/to/binary/<binary name> -v检查每个二进制文件。

例如,在我的本地设置中,我在/usr/bin中为5个不同的SAPI提供了20个不同的PHP二进制文件,在/usr/local/bin中有几个不同的SAPI,在/etc/php中有一些更多。

sherif@sdev:~$ ls /usr/bin/php*

/usr/bin/php -> /etc/alternatives/php
/usr/bin/phpize -> /etc/alternatives/phpize
/usr/bin/phpize55
/usr/bin/php55-mod -> /usr/lib/apache2/modules/libphp55.so
/usr/bin/php55-fpm
/usr/bin/php55-cli
/usr/bin/php55-cgi
/usr/bin/php55dbg
/usr/bin/phpize56
/usr/bin/php56-mod -> /usr/lib/apache2/modules/libphp56.so
/usr/bin/php56-fpm
/usr/bin/php56-cli
/usr/bin/php56-cgi
/usr/bin/php56dbg
/usr/bin/phpize7
/usr/bin/php7-mod -> /usr/lib/apache2/modules/libphp7.so
/usr/bin/php7-fpm
/usr/bin/php7-cli
/usr/bin/php7-cgi
/usr/bin/php7dbg
/usr/bin/phpize71
/usr/bin/php71-mod -> /usr/lib/apache2/modules/libphp71.so
/usr/bin/php71-fpm
/usr/bin/php71-cli
/usr/bin/php71-cgi
/usr/bin/php71dbg

这要注意两件事。

  1. 如果未指定可执行文件的绝对路径,则必须考虑$PATH环境变量(这可能会因用户而异)。
  2. 当您指定绝对路径时,请确保检查它是否是您想要的可执行文件。不要盲目地认为它是基于惯例的。它可能在每个系统上都不一样。