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.";
Whoami
isstatememtではユーザー名"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としては実行できませんか?