1

exec() と shell_exec を使用して php で複数のコマンドを実行しようとしていますが、null 値を取得してはいけませんが、何も起こっていません (コマンドラインで以下の文字列をコピーして貼り付けると、正常に動作します)必要な仕事を達成する)これは私が使用しているコマンドです:

$command = "cd /../Desktop/FolderName;";
$command .= 'export PATH=$PATH:`pwd`;';
$command .= 'Here i execute a compiler;';

そして、escapeshellcmd() を使用します

$escaped_command = escapeshellcmd($command);

それから

shell_exec($escaped_command);

私が間違っていることと、escapeshellcmd()の代わりにescapeshellarg()も試しましたか?

解決策: 問題は、他の所有者に対する実行コンパイラの許可が無効であり、これが問題でした。PHPで関数を使用している場合exec()、ファイルの所有者はwww-dataになるため、ubuntuのACLまたはLinuxベースのオペレーティングシステムからwww-dataの許可を与える必要があります(これを行うことで所有者を知ることができますexec('whoami'))、または実行する必要があるファイルによって。

4

1 に答える 1

0

(下手な英語で申し訳ありません) Linux では、コマンドをシェル スクリプトに追加できます。

これを任意のファイルに入れることができます:

#!/bin/bash
cd /../Desktop/FolderName
export PATH=$PATH:`pwd`
EXECUTE COMPILER

これをfille.shとして保存します

次に、実行権限を追加します: chmod +x path/to/file.sh

PHP から、このスクリプトの実行を呼び出すことができます。 shell_exec('sh path/to/file.sh');

お役に立てれば!

于 2012-05-21T00:04:35.887 に答える