0

Linux NASに、WebサーバーとPHPを実行しているWebページがあります。サーバーからスクリプトを開始して、データベースにデータを書き込みたい。

私がnew69.php(問題のウェブサイト)にいるとき、私は例えば:

$uptime = exec('uptime');echo $uptime; (そしてこれは機能します)

だから私はつながりがあります。

次に、ifステートメントを使用します。

if (isset($_POST['verzenden'])) {
 $output1 = exec('whoami');
 exec('/share/MD0_DATA/Qweb/sqlite/AllesNaardDB.sh');
 } else {

    echo "Nog lekker niets gedaan.";

Whoamiisstatememtではユーザー名"httpdusr"が指定されるため、ifステートメントに到達して機能します。

今私がするときのexecステートメント:

以下を含むAllesNaardDB.shを実行する必要があります。

cd /share/MD0_DATA/Qweb/sqlite
echo "Wasmachine"
python2.6 wasm_util_sql.py [param]
echo "alles gegeven"
exit 0

何も表示または実行されません。

しかし、私がするとき:

$output = exec('/share/MD0_DATA/Qweb/AllesNaardDB.sh');
echo "<pre> $output </pre>";

スクリプトのals行を変数$output、 "allesgegeven"で取得します。

最初、私はそれが権利と関係があるのではないかと思いました。したがって、私は(ユーザーを切り替えて)suを「httpdusr」に変更すると、puttyのスクリプトは正常に実行されます。

また、「ls -l」を使用して別のスクリプトff.shを作成し、すべてが機能するようにしました。また、passthru()、system()、shell_execを削除します。唯一の改善点は、system()とpassthru()を使用して、「echo"Wasmachine"」がWebサイトに表示されたことです。

Pythonジョブが開始されない理由がわかりませんか?

私はもう少し作業しましたが、ユーザーに依存するsqlite3コマンドがある可能性がありますか?

そのように、私は管理者としてデータベースへの書き込みアクションを実行できますが、httpdusrとしては実行できませんか?

4

2 に答える 2

0

#!/bin/shスクリプトの先頭に追加してみて、それがであることを確認してchmod a+xください。

于 2012-08-22T20:01:05.037 に答える
0

これは、データベースに書き込んでいるPythonスクリプトのパスに問題があります。Webページ(MD0_DATA / Qweb /)から開始する場合は別のパスを使用し、シェルスクリプト(MD0_DATA / Qweb / sqlite)から開始する場合は別のパスを使用します。

*私はまだ問題を解決していませんが、それを理解しています。皆さん、努力に感謝します。

于 2012-08-26T18:51:28.650 に答える