现在我在 CPanel CRON 作业部分中的调用是:
nice php /home/user/public_html/process.php
在对 CentOS 和 PHP 5.2 进行最新更新后,我现在在所有 CRON 作业上都收到此错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/ssh2.so' - /usr/lib64/php/modules/ssh2.so: cannot open shared object file: No such file or directory in Unknown on line 0
去把事情弄得更糟,PHP 函数未被识别(如mysql_connect
和require_once
)(尽管仅限于 CPanel 中的 CRON 脚本,正常的可公开访问的 PHP 文件才能毫无问题地加载到公共互联网上)。
通过一些谷歌搜索,看来我需要以用户“nobody”的身份运行它才能使其正常工作。
如果我在 shell 中,我su -s /bin/bash nobody
首先会充当该用户,但在 CPanel CRON 脚本中,这不起作用。
更新: 根据要求,从 CRON 运行时 php 进程文件的所有错误:
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/ssh2.so' - /usr/lib64/php/modules/ssh2.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/ssh2.so' - /usr/lib64/php/modules/ssh2.so: cannot open shared object file: No such file or directory in Unknown on line 0
Warning: require_once(../users/config/application_top.php): failed to open stream: No such file or directory in /home/username/process.php on line 34
Fatal error: require_once(): Failed opening required '../users/config/application_top.php' (include_path='.:/usr/share/pear:/usr/share/php') in /home/username/process.php on line 34
require_once() 中提到的文件确实存在,所以我不知道它为什么会这样。而且,它已经工作了几个月了……我不得不假设是它yum update
杀死了它。
答案1
PHP 警告:PHP 启动:无法加载动态库“/usr/lib64/php/modules/ssh2.so”-/usr/lib64/php/modules/ssh2.so:无法打开共享对象文件:第 0 行未知中没有该文件或目录
确保您拥有相同的:
- $PATH
- 所有其他环境变量
在 cron 作业中运行时。您可以将输出转储echo $PATH
到env
临时文件,并与从命令行运行时的结果进行比较。