0

这台机器运行良好,但由于某种原因,现在我无法再在这台服务器上远程执行 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 时正在重新创建上面的文件,这可能是问题吗?

4

0 回答 0