这台机器运行良好,但由于某种原因,现在我无法再在这台服务器上远程执行 bash 脚本。
我可以毫无问题地通过 ssh2_exec 连接,但是当我尝试运行 bash 脚本时没有任何反应。
if (!function_exists("ssh2_connect")) die("function ssh2_connect doesn't exist");
$connection = ssh2_connect('serverip.com', 22);
ssh2_auth_password($connection, 'user', 'password');
$stream = ssh2_exec($connection, "/root/incoming/test.sh &> /dev/null &");
在这个例子中,test.sh 只是调用 wget 来下载一个预定义的文件。
wget -O /root/incoming/files/myfile.zip http://remoteserver.com/file.zip
当我在这台机器上本地 grep ssh2 时:
php -m |grep ssh2
我得到了预期的结果:
ssh2
但是当我远程 grep ssh2 时,我得到了这个:
PHP Warning: Module 'ssh2' already loaded in Unknown on line 0
ssh2
我在这里发现了以下相关问题,说明此错误可能是由在配置文件中加载两次的扩展引发的。
所以,正如我所建议的那样,我检查过/etc/php5/apache2/php.ini
-extension=ssh2.so
不在那里,所以这不是问题。
接下来,我遵循了另一个建议并注释掉了/etc/php5/mods-available/ssh2.ini
:
;extension=ssh2.so
但是现在当我尝试 grep ssh2 时,模块根本没有加载。还有其他地方我可以寻找 ssh2 可能被双重加载吗?
干杯!
编辑 - 我确实找到了一个名为的文件20-ssh2.ini
,/etc/php5/apache2/conf.d
该文件正在再次加载扩展名并已将其删除,重新启动 apache 但仍然出现错误。
编辑二 - 刚刚意识到当我重新启动 Apache 时正在重新创建上面的文件,这可能是问题吗?