このマシンは完全に機能していましたが、何らかの理由で、このサーバーで 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
このマシンでローカルに ssh2 を grep すると、次のようになります。
php -m |grep ssh2
期待される結果が得られます:
ssh2
しかし、ssh2をリモートでgrepすると、次のようになります:
PHP Warning: Module 'ssh2' already loaded in Unknown on line 0
ssh2
ここで、構成ファイルに拡張機能が 2 回読み込まれているためにこのエラーが発生している可能性があることを示す、次の関連する質問を見つけました。
だから、私がチェックしたことを提案したように/etc/php5/apache2/php.ini
-extension=ssh2.so
そこにないので、これは問題ではありません.
次に、他の提案に従い、コメントアウトしました/etc/php5/mods-available/ssh2.ini
。
;extension=ssh2.so
しかし、ssh2 を grep しようとすると、モジュールがまったくロードされません。潜在的に二重にロードされているssh2を探すことができる場所は他にありますか?
乾杯!
編集-拡張機能を再度ロード20-ssh2.ini
しているファイルを見つけて削除し、Apacheを再起動しましたが、まだエラーが発生しています。/etc/php5/apache2/conf.d
編集 II - Apache を再起動すると上記のファイルが再作成されていることに気付きましたが、これが問題でしょうか?