0

でbashシェルスクリプトを実行したいphp。ディレクトリの作成に使用されるシェル スクリプト。.phpしかし、サーバーでファイルを実行している間は作成されません。

私が使用した上記のphpコード-------

<html>
<?php
echo exec('./home/biswajit/lh.sh')
?>
thanx
</html>

そして、対応するlh.shファイルのコードは------

#!/bin/bash

cat <<EOF | /home/biswajit/matlab  -nodesktop -nosplash -nodisplay /> /home/biswajit/matlab_result.out
mkdir('/home/biswajit/Done');
disp('directory created');
exit
EOF
4

2 に答える 2

0

私は最近、PHP が実際の Bash シェルを取得して対話できるようにするプロジェクトを公開しました (必要に応じて root として)。これにより、exec() と shell_exec() の制限が解決されます。ここから入手してください: https://github.com/merlinthemagic/MTS

ダウンロードしたら、次のコードを使用するだけです。

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $shell->exeCmd('cat <<EOF | /home/biswajit/matlab  -nodesktop -nosplash -nodisplay /> /home/biswajit/matlab_result.out');
$return2  = $shell->exeCmd('mkdir -p \'/home/biswajit/Done\'');

//the return will be a string containing the return of the command
echo $return1;
echo $return2;
于 2016-05-20T10:25:34.083 に答える
0

実行されているユーザーの権限を確認してください。「whoami」(bash)コマンドの出力をエコーし​​て、スクリプトの実行に使用されているユーザーを知ることができます。

たとえば、「www-data」ユーザー(ubuntuの[およびおそらく他のユーザー]のデフォルトのhttpdユーザー)で実行された場合、ユーザーのホームフォルダーにディレクトリを作成する権限がない可能性があります。

于 2013-08-07T11:48:24.497 に答える