Crontab 无法将 php 脚本作为 /usr/bin/php 使用,但可以作为 /usr/bin/php-cgi 使用

Crontab 无法将 php 脚本作为 /usr/bin/php 使用,但可以作为 /usr/bin/php-cgi 使用

我正在解决 crontab 的一个问题,其中一个没有 html 的 php 脚本作为独立脚本每天运行时往往会使用 /usr/bin/php 失败,而作为 /usr/bin/php-cgi 运行得很好。

/usr/bin/php 下的错误

PHP Warning:  include_once(Net/SMTP.php): failed to open stream: No such file or directory in /var/www/html/iop/lib/Mail/smtp.php on line 206
PHP Warning:  include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php:./lib/:./lib/Net/:./lib/Mail/:./lib/Log/') in /var/www/html/iop/lib/Mail/smtp.php on line 206
PHP Fatal error:  Class 'Net_SMTP' not found in /var/www/html/iop/lib/Mail/smtp.php on line 210

这些文件具有 775 权限。

输入绝对路径后,我们仍然会收到相同的错误。

include('/var/www/html/iop/lib/Net/SMTP.php');

PHP Warning:  include_once(Net/SMTP.php): failed to open stream: No such file or directory in /var/www/html/iop/lib/Mail/smtp.php on line 206
PHP Warning:  include_once(): Failed opening 'Net/SMTP.php' for inclusion (include_path='.:/usr/share/pear:/usr/share/php:./lib/:./lib/Net/:./lib/Mail/:./lib/Log/') in /var/www/html/iop/lib/Mail/smtp.php on line 206
PHP Fatal error:  Class 'Net_SMTP' not found in /var/www/html/iop/lib/Mail/smtp.php on line 210

只是想知道是否有其他人遇到过这个问题/知道发生了什么?

答案1

可能是 php 和 php-cgi 对某些路径的解析不同。

您是否尝试过将其包含在绝对路径中?这样有效吗?

include_once('/usr/share/php/Net/SMTP.php');

当然,这取决于您安装它的位置。

答案2

这被放弃了,但只是为了澄清这些年来的事情:

应该在尝试包含的文件上更改绝对路径,在这种情况下,文件是第 206 行的 /var/www/html/iop/lib/Mail/smtp.php。

相关内容