我正在使用此/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
它的工作正常,是吗?它会在所有主机上运行吗?和环境?
答案 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
这要注意两件事。
$PATH
环境变量(这可能会因用户而异)。