0

簡単なテスト ファイルを作成し、次の内容で exec.php と呼びます。

<?php
    exec('scp -r /vhosts/malta/docs/www/mysite/uploads/www.mysite.com/images/promotions/xmas-survey user@255.255.255.255:/vhosts/mysite/docs/www/images/promotions/xmas-survey/',$out);
    print_r($out);
?>
Command Executed.

参考までに: アカウント ユーザーは 255.255.255.255 にアクセスするのにパスワードは必要ありません

問題はここにあります:

このファイルを端末から次のように実行すると

php /vhosts/test/www/exec.php

コマンドは機能しますが、Webから実行しようとすると

http://localhost/test/exec.php

コマンドはそうではありません。

何か案は?

前もって感謝します

4

3 に答える 3

0

ユーザー「www-data」がexec.phpファイルを実行するために必要な実行権限を持っていることを確認してください

于 2012-10-24T17:25:15.777 に答える
0

Web サーバーを実行するユーザー (例: www-data、apache2 など) のために、Web サーバーから他のサーバーへの ssh ログインを作成する必要があります。そうしないと、scp コマンドが機能しません。

sshログインを作成すると、コマンドが機能するはずです...

まだ行っていない場合は、セキュリティを強化するために rsa キーで ssh ログインを保護することをお勧めします。

于 2012-10-24T16:27:17.863 に答える
0

おそらく問題は、scp へのフル パスを指定する必要があることです。通常、Web サーバーのユーザーはパスに同じものを持っていません。

何が問題なのかを実際に診断するには、stderr を読み取り可能な場所にリダイレクトします。

例として:

exec($yourcommand . " 2>&1", $out);
// print out the $out variable
于 2012-10-24T16:44:23.743 に答える