問題タブ [shell-exec]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - phpスクリプトからbashスクリプトを開始する
shell_execを使用してbashスクリプトを実行しようとしていますが、機能しないようです。(何も起こらないようです)私はnginxと最新のphp5-cgiを使用しています。phpファイルは次のようになります。
これはbashスクリプトがどのように見えるかです:
phpscriptにエラーはなく、ファイルは問題なく作成されますが、$ startserverが実行されていないようで、$pidは空です。phpファイルの何かを見逃しましたか、それともユーザーの権限を変更する必要がありますか?ご協力いただきありがとうございます。
php - shell_exec は NULL を返します
コードを実行すると
NULL を返しますが、ping -c 4 127.0.0.1
ssh で同じコマンド ( ) を実行すると、完全に返されます...
はい、スクリプトはshell_execを実行できます。試してみたところshell_exec('ls')
、正しく返され、shell_exec('ping -V')
返さping utility, iputils-ss020927
れたのでpingが呼び出されましたが、応答がありません...
助けはありますか?ありがとう!
php - PHPpasswdエラー
私はこれをやっています:
しかし、これを実行すると、次のエラーが発生します。
なんで?これを解決するにはどうすればよいですか?また、passwdから出力を非表示にするにはどうすればよいですか?
php - 秘密鍵を使用してshell_execでPHPファイルからGitフェッチ
特定のフォルダーで git fetch を実行する php スクリプトを作成しました。
正確なコマンドは次のとおりです。
もちろん、これをコマンド ラインで実行すると、完全に機能します。
ここで、shell_exec を使用してこれを実行すると、次のエラーが発生します。
接続しようとしているサーバーを調べると、正確なエラーは次のとおりです。
4 月 8 日 10:52:17 myserver sshd[26230]: 192.15.136.253 ポート 32878 ssh2 からの git のパスワードの失敗
じゃあ良いよ。この shell_exec は、設定した ~/.ssh/id_rsa キーを読み取ることができないと思います。したがって、そのファイルに 777 のアクセス許可を与えると、このエラーが発生します。
@@@@@ @ 警告: 保護されていない秘密鍵ファイル! @ @@@ '/home/bathan/.ssh/id_rsa' のパーミッション 0777 が開きすぎています。秘密鍵ファイルは、他のユーザーがアクセスできないようにすることをお勧めします。この秘密鍵は無視されます。不正な権限: キーを無視: /home/bathan/.ssh/id_rsa 権限が拒否されました。もう一度お試しください。許可が拒否されました。もう一度お試しください。許可が拒否されました (公開鍵、gssapi-with-mic、パスワード)。致命的: リモート エンドが予期せず電話を切りました
したがって、git IS はキー ファイルを読み取ることができると思います。正しい権限に戻すと、最初のエラーに戻ります。
注:Apacheサーバーは同じユーザー(bathan)で実行するように設定されており、これはubuntuボックスです。
これは ssh -v 応答です
何か案は?
php - shell_exec の PHP sudo
shell_exec で root としてコマンドを実行したい。これが危険であることはわかっていますが、信じてください。このページにアクセスするには、MOD_AUTH でログインし、適切な特権を持っている必要があります。安全です。どうすればこれを行うことができますか?
php - php shell_execタッチリダイレクトとadduser
最終的にphpのshell_exec
機能を使用して新しいLinuxユーザーを作成しようとしています。ただし、デバッグでも問題が発生しています。これが私のコードです
try-catch
ステートメントは何もしないので、シェル エラーは PHP エラーとして伝播されないと思います (Python もこの方法です) 。行$output=shell_exec("pwd")
は正しいディレクトリを返します。ただし、行shell_exec("touch test.txt")
はファイルtest.txtの作成に失敗します(フルパス「/home/user/.../test.txt」を指定しても)。
言うまでもなく、ユーザーを追加するための実際のコードも機能しません。
編集私はコードのいくつかを修正することができました。このtouch test.txt
エラーは、権限が不十分であることが原因でした。Apache はユーザー www-data でログインします。私は単純にそのユーザーのホーム フォルダーを作成し、そのホーム フォルダー内のファイルに触れるようにしました。
ただし、Christian の要求による 3 つのデバッグ ステートメントの追加は、現在問題を引き起こしています。
編集さらに調査すると、ユーザーwww-dataとしてログインするときにルートとしてsshできないことに関係しています。ssh -v
戻りますdebug1: read_passphrase: can't open /dev/tty: No such device or address
。私の推測では、ssh は一般的な「xxx を known_hosts に永続的に追加しますか」と尋ねていますが、応答できません。ユーザーを既知のホスト リストに手動で追加する方法はありますか?
php - テキストファイルを取得するためのphp shell_exec()出力
rate -c 192.168.122.0/24
Centos コンピューターでコマンドを実行し、コマンドを使用してそのコマンドの出力をテキスト ファイルに書き込もうとしていますshell_exec('rate -c 192.168.122.0/24')
。まだ運がない!!
php - shell_execの実行時間を制限し、生成された出力を取得します
PHPでのshell_execの最大実行時間を20秒に制限し、この時間中に生成された出力をフェッチしようとしています。shell_execが20秒未満で終了した場合、スクリプトは直接続行する必要があります。
具体的には、Subversionリポジトリの多数のリビジョンを反復処理する関数を開発しています。リビジョンごとに、svn diffをフェッチし、追加された行数をカウントします。問題は、リビジョンで非常に大きなファイルがコミットされている場合、スクリプトがハングすることです。したがって、私は各svndiffコマンドの実行時間を制限しようとしています。
popen()とsleep()の組み合わせは、100回の反復では実行できない各反復でスクリプトを20秒間スリープさせるように見えるため、オプションではありません。max_execution_timeを設定すると、致命的なエラーが返されるため、オプションではありません。
php - PHPを使用したshell_exec
PHP shell_execを使用してWeb上でapktool (Androidアプリケーションをアンパッケージするためのツール)を実行しようとしていますが、機能していません。なぜこれが起こるのか誰かが知っていますか?
コード行は実際には次のようになります。
どんな提案でも、なぜphpを実行しても何も起こらないのか、完全に途方に暮れるのに役立ちます。ありがとう!