• ベストアンサー

PHPでexec関数の記述方法について

phpでexec関数を使う時に、コマンドの記述を、 exec("xxx -yyy zzz"); と記述すると上手く動きますが、 exec("xxx -yyy zzz"); と改行を含むと正しく実行されません。 exec関数は改行させた記述は不可能なのでしょうか? とても長いプログラムになってしまって困っています。 どうぞよろしくお願い致します。

noname#225112
noname#225112
  • PHP
  • 回答数2
  • ありがとう数0

質問者が選んだベストアンサー

  • ベストアンサー
  • tsaito
  • ベストアンサー率68% (17/25)
回答No.1

改行はダメだと思います。 exec()の中身が長くなるのがイヤなら、 変数に詰め込んでしまえばいいかと。 <? $cmd = "touch abc.txt"; exec($cmd); ?>

その他の回答 (1)

  • inu2
  • ベストアンサー率33% (1229/3720)
回答No.2

改行もそのままコマンドとして入力されてしまいます。 exec("xxx -yyy \ zzz"); こうやりゃいいだけ。 別にPHPに限ったことじゃないですんで、極々普通にコマンドラインから #> xxx -yyy \ zzz とかやってみてください。普通に動くことを確認したら exec()に記述しましょう。 また、二つ以上のコマンドを入力させたい場合は ; を使えばいいだけ exec("xxx -yyy; zzz");

関連するQ&A

  • phpのshell_exec関数の動作に関する質問です。

    phpのshell_exec関数の動作に関する質問です。 環境はFreeBSD7.1 php5.2.13です。 もともとperlスクリプトtest.cgiがあって、 /path/test.cgi filea fileb (以後これをコマンドラインという) というコマンドラインが正常に実行されることが確認済みです。 このコマンドラインが実行されるとfilebの内容が変化します。 次にphpスクリプトからコマンドラインを実行するために test.phpスクリプトの途中に、 shell_exec("/path/test.cgi $filea $fileb"); と書きました。 (test.cgiではperlライブラリを読み込んでいます。 phpには同等のライブラリがないためにやむを得ずこうしています。) ところがtest.phpを(ブラウザから)実行しても コマンドライン実行後に期待される$filebの変化がありません。 つまりコマンドラインが実行された形跡がないのです。 test.phpスクリプトの$filea, $filebが正しく変数展開されていることは確認済みです。 FireFoxブラウザから見るとtest.phpスクリプトは特にエラーもなく正常に実行されているように見えます。 質問 1 正常に実行できるコマンドラインをphpのshell_exec関数で実行できない理由としてどのようなことが考えられるでしょうか。

    • ベストアンサー
    • PHP
  • PHPからexecを使ってGnuPGを実行できない

    GnuPGをPHPからexec関数を使って実行しようとしていますが、exec関数がエラーになって GnuPGが実行されません。 ただしexec関数に渡すコマンドをコマンドラインから直接打ち込むと正常に実行されます。 具体的には $cmd = "/usr/local/bin/gpg --always-trust --batch --no-secmem-warning -e -a -r ユーザー名 ファイル名のフルパス"; $ret = exec( $cmd, $output, $ret_val ); ここで$retにFALSEが、$ret_valには2が返ってきます。 $cmdのコマンドをコマンドラインから実行すると正常に実行されます。 環境 Apache/1.3.27 (Unix) (Red-Hat/Linux) GnuGP 1.4.6 PHP Version 4.3.11(セーフモードはOff) 以上、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • php exec関数

    exec関数を使いたいのですが 調べたら例が出てきたのですが $return_data = exec("/usr/local/bin/php ./top.php param1 = 1 m2 = 2"); exec()の中をどう修正していいかわかりません usrtとかユーザ名ですか? localとはlocalhostとかでいいですか? bin/phpってなんですか ぜんぜんわかりません すいません

    • 締切済み
    • PHP
  • 別サーバのプログラムを起動

    Aサーバ(xxx.xxx.xxx.xxx)よりBサーバ(yyy.yyy.yyy.yyy)上のプログラムを起動したいと考えております。 PHPのプログラム上"exec"関数などを使用するのかな?と思うのですがどうも上手くいきません。 どなたかご教示下さい。 大まかな流れとしては、 1:Aサーバ上の/home/httpd/test.phpを実行 2:1のtest.phpのプログラム内でBサーバの/home/httpd/test/testb.phpを起動する。 3:処理終了 ※testb.phpはDBに現在日付をinsertする処理となります。 お手数ですが宜しくお願い致しますm(_ _)m

    • ベストアンサー
    • PHP
  • PHPでexecやpassthruすると

    execやpassthruで実行した実行プログラムが終了するまで待たされると思いますが バックグラウンドで実行する方法はあるでしょうか? PHPはその行で止まらずに実行プログラムとは別に以降の行を実行するということです 要するにexecは実行プログラム実行のトリガーをかけるだけにしたいのです もしあったら具体的に数行以下のコードで教えてください よろしくお願いします

    • ベストアンサー
    • PHP
  • phpで外部phpを稼働させる方法について

    初心者です、宜しくお願いします。 外部でメールを送信するプログラムを利用者にストレスが無いようにバックグラウンドで稼働させたいと考えています、   自分なりに調べて、exec関数でテストプログラムを作ってみましたが記述の方法に誤りがあるのか動きません、 sampleプログラム (test.php) <?php exec("nohup php -c '' 'sendmail.php' > /dev/null &"); ?> sendmail.phpは自分宛に送信するよう簡単に作ったプログラムで test.phpと同じディレクトリに設置してあります、 単独で実行するときちんと届きます、 パーミッションは双方とも、604に設定してあります。 どなたかご教授いただけると助かります。 宜しくお願い致します。

    • 締切済み
    • PHP
  • PHPのexec()関数

    phpスクリプトで $command = "./child.php 2>&1"; exec($command, $outstr, $rtn); のような感じで別の phpスクリプトを実行しようとしています。 (child.php は単独では問題なく実行できています) しかし、child.php を 通常の phpファイルのように <?php で開始すると $rtn = 2 で line 1: ?php: No such file or directory というエラーが帰ってきます。 1行目にシェバング行 #!/usr/local/bin/php7.3 を追加すると $rtn = 126 で "/usr/local/bin/php7.3: bad interpreter" のようなエラーになります。 php のパスはサーバーのマニュアルやユーザーページで 確認する限り間違っていないと思います。 (バージョンを外したり、変えたりしてみましたが同じです) どこが間違っているのか、わかる方がいましたら アドバイスをお願い致します。

    • ベストアンサー
    • PHP
  • 外部実行関数を用いて、外部ファイルで生成した値を取得する方法

    PHPの exec() や system() 関数(もしくは他のコマンド実行関数)を用いて実行した外部プログラムで生成した配列等を取得する方法をご存知の方はおられませんでしょうか。 詳しい方がおられましたらご教授頂ければと思います。 宜しくお願い致します。

    • 締切済み
    • PHP
  • PHPのexecで別PHPの実行

    「エックスサーバー」というレンタルサーバーを使用しています。 PHPファイルの中で[exec()]関数を用いて、別ファイルのPHPを実行させたいと考えております。  ・PHPバージョン:5.3.3  ・ドメイン:XXXXX.xsrv.jp 以下の内容(ProgramA)を実行すると、 [exec()]関数で呼び出している処理(ProgramB)が実行されていないように思います。 どのように修正したら、(ProgramB)が実行されるのでしょうか? どうかご教示くださいませ。 ---ProgramA.php (起動する側)---------------------- <?php exec('/usr/bin/php5.3 /home/XXXXX(ユーザー名)/xsrv.jp(ドメイン)/public_html/AAA/BBB/ProgramB.php'); echo "test!"; ?> ※ProgramA.phpを実行すると、ブラウザには「test!」という文字列が表示されます。 ※ProgramA.phpのパーミッションは755に設定されています。 ---ProgramB.php (起動される側)---------------------- <?php echo"HelloWorld"; ?> ※ProgramB.phpのパーミッションは755に設定されています。

    • 締切済み
    • PHP
  • コマンドプロンプトから引数を渡して実行するには?

    メールを送信するPHPをコマンドプロンプトから実行しています。 メールが送信される事は確認しました。 使い勝手を少しでもよくするためにsubjectやfromの部分を コマンドプロンプトから引数で渡して実行してやりたいのですが どのようにすれば可能なのでしょうか? コマンドプロンプトの実行コマンド >php send_mail.php を >php send_mail.php subject from のようにしたいと考えてます。 <?php mb_language("japanese"); mb_internal_encoding("SJIS"); $to = "xxx@yyy.zzz"; $subject = "ここはsubject"; $body = "ここはbody"; $from = mb_encode_mimeheader("ここはfrom")."<xxx@yyy.zzz>";mb_send_mail($to,$subject,$body,"From:".$from); ?> 以上です、よろしくお願いします。

    • 締切済み
    • PHP