我正在解决 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。