这台机器工作正常,但出于某种原因,我现在无法再在此服务器上远程执行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
我发现了以下相关问题here,指出在配置文件中加载了两次扩展可能会引发此错误。
所以,正如我所建议的那样/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但仍然收到错误。
编辑II - 刚刚意识到重新启动Apache时正在重新创建上面的文件,这可能是问题吗?