• 締切済み

system関数でphpが動作しない

phpプログラムからphpプログラムをバックグラウンドで動作させようと下記のようにsystem関数を使いましたが、phpが動作しませんでした。 system("/usr/local/bin/php /home/user/www/test.php > /dev/null &"); 「動作しない」様子が、異常でして、コマンドラインからtopで調べてみると、phpのプロセスIDが何度も立ち上がり、上記関数があるプログラムをサーバーから消さないと、その状態が続きます。しかし、プロセスは立ち上がっても、phpプログラムは正常に動作していなようです。 さくらインターネット(スタンダード)の共用サーバーを使っています。サーバーのOSは、FreeBSD 4.10です。 よろしくお願い致します。

  • PHP
  • 回答数2
  • ありがとう数2

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

<?PHP ob_start(); include("test.php"); ob_end_clean(); ?> としてみてはいかがですか?

lucky111
質問者

お礼

ご回答頂きまして、ありがとうございます。 プログラムは正常に動作しましたが、バックで動かすプログラム(test.php)にsleep(25)と書いて、25秒間待たせたところ、元もプログラムも25秒待ってしまいましたので、バックグラウンドでの動作ではないようでした。 ともあれ、ご回答ありがとうございました。

回答No.1

マニュアルからの抜粋です。 注意: この関数を用いてプログラムを開始し、バックグラウンドで実行させたままにしたい場合、このプログラムの出力をファイルまたは他の出力ストリームにリダイレクトするようにする必要があります。さもないと、 PHP はプログラム実行終了までにハングしてしまいます。 注意: セーフモード が有効な場合、 safe_mode_exec_dirの中にある実行プログラムのみ実行可能です。実際的な理由により、現在、実行プログラムへのパスに ..を含めることはできません。

lucky111
質問者

お礼

ご回答頂きまして、ありがとうございます。 下記マニュアル文を読んでいませんでしたので、試してみましたが、同じ状況でした。 よろしければ、確認させて頂きたいのですが、下記の文は、「php.ini」に safe_mode_exec_dir='/home/user/www/test' といった文を加えることでよろしいのでしょうか。 >注意: セーフモード が有効な場合、 safe_mode_exec_dirの中にある実行プログラムのみ実行可能です。実際的な理由により、現在、実行プログラムへのパスに ..を含めることはできません。 よろしくお願い致します。

関連するQ&A

  • PHPでバックグランド処理

    PHPでバックグラウンド処理をSYSTEM関数で行っていたのですがサーバーの変更をしてからSYSTEM関数が動作しなくなってしまいました(´;ω;`) なのでSYSTEM関数以外でバックグラウンド処理はできないでしょうか?よろしくお願いします(m。_。)m ↓旧サーバーで使用していた奴です system("/usr//bin/php /home/member/ユーザーID/public_html/melmaga.php");

    • 締切済み
    • PHP
  • PHP バックグラウンド処理

    apache1.3系+PHPで大量のメール送信プログラムを作成していますが、ある動きで困っております。 特定のフォームにて件名と本文を入力し、submitすることでsystem関数を利用して別のプログラムをバックグラウンドで動かそうとしてますが、メール送信前にコメントを表示したいのです。 しかし、表示をする前に後に記述しているsystem関数が読み込まれるようで、system関数の処理が終わると、そのコメントが表示されるようになってしまってます。 例) // ここでコメントを表示 print<<<HTML <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=EUC-JP"> <title>WEBMAIL</title> </head> 送信を受付ました </body> </html> HTML; // メール送信プログラムをバックグラウンドで system("/usr/local/bin/php webmail2.php $subject $address $data & "); 実際に100件程のアドレスに向けて送信しましたが、送信処理は正常に動作しているようですがバックグラウンドで動いている気配がありません。 また、system関数の処理の前にコメントを表示したいのですが、実際に表示されるのは配送処理が終わってからとなっています。 system("/usr/local/bin/php webmail2.php $subject $address $data >/dev/null & "); ↑ これですと変数が受け渡しされませんでした。 先にコメントを表示するにはどうしたらいいのでしょうか?

    • ベストアンサー
    • PHP
  • PHP System関数が動作しません

    サーバー上の、あるphpファイル(sample_c.php)をシステム関数を使用して実行する必要があり、以下の流れのプログラムを作成しました。 sample_a.php でSubmit sample_b.php でSystem関数でsample_c.phpを呼び出し sample_c.php で実行 です。 <? /* sample_a.php */ ?> <form action="sample_b.php" method="post"> <input type="hidden" name="login" value="sample_user"> <input type="hidden" name="action" value="trigger_b"> <input type="submit" value="submit"> </form> <? /* sample_a.php */ ?> <? if($_POST['action'] =="trigger_b") { $login = $_POST['login']; system("sample_c.php $login"); header('Location: sample_a.php?action=fin'); exit; } else { header('Location: sample_a.php?action=error'); exit; } ?> <? /* sample_c.php */ ?> $_SERVER['argv'] で受け取った値を処理 ----------------- 3つのファイルは全て同じ階層に配置してあります。 sample_a.phpでsubmitすると、sample_a.php?action=fin にリダイレクトするのですが、 sample_c.php内の動作が実行されていません。 中身はDB接続して、テーブルに保存する単純なsql文が入っていて、sample_c.php単体での動作は確認しています。 (単体テストの場合は$_SERVER['argv']の代わりに変数に値をセットして実行しています。) System関数で変数を受け渡さずに system("sample_c.php $login"); を system("sample_c.php") として実行してもうまくいきません。; 原因が分かるかたがいらっしゃれば教えてください。 お願いします。

    • ベストアンサー
    • PHP
  • PHP の system コマンド

    ブラウザからtest.php を実行してperl スクリプトを実行したいのですが、 うまく動きません。アクセス権の問題なのでしょうか。 よろしくお願いします。 ---------------- test.php ---------------------- <? system("/usr/bin/perl /home/usr/public_html/test.pl > /dev/null &"); echo "OK."; ?> ---------------- End File ---------------------- ---------------- test.pl ----------------------- #!/usr/local/bin/perl $sendmail = '/usr/sbin/sendmail'; open(SENDMAIL,"| $sendmail -t -i"); print SENDMAIL <<'END'; From: hoge@hoge.com To: moga@moga.com Subject: test Hello This is test END close(SENDMAIL); --------------------- End File -------------------------

    • ベストアンサー
    • PHP
  • PHPでファイルの取得

    PHP4.3.9(FreeBSD4.7)にて郵便データファイルをダウンロードし、lha解凍したいのですが、systemコマンドを実行しても動作しなくて困っています。 system("/usr/local/bin/wget ダウンロードするサイトとファイル名"); いろいろ探してみましたが、うまくいきません。 教えてください。

    • ベストアンサー
    • PHP
  • バックグラウンド処理について

    環境:CentOS5 php 5.1.6 (cli) safe_mode off メールをバックグランド処理するため、system関数を用いています。 以下のように記述し、 system("/usr/bin/php -f /フルパス/sendjob.php > /dev/null &"); sendjob.phpには ------------------ sleep(10); 自分宛メール送信 ------------------ としております。 メールは問題なく届くのですが、非同期になっておらず困っております。 sleep(10)ブラウザで固まってから、画面遷移し送信メールが届きます。 どこを確認すればよろしいでしょうか? ご教授頂けますようよろしくお願い致します。

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

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

    • 締切済み
    • PHP
  • PHPのpostgreSqlの関数???

    Postgresqlへのパスは下記のとおり通っています。 fumi@tsl fumi]$ echo $PATH /usr/local/bin:/bin:/usr/bin:/usr/X11R6/bin:/usr/local/pgsql/bin:/home/fumi/bin PHPを起動したら下記のエラーが出るのは何故でしょうか?どうすれはpostgresqlの関数をPHPで使えるようになりますか? Fatal error: Call to undefined function: pg_connect() in /home/fumi/www/pgimage-1.2/init.inc on line 54 よきアドバイスお願いいたします。

    • 締切済み
    • PHP
  • crontabでPHPスクリプトが実行出来ない

    crontabで毎分PHPのスクリプトを起動する記述をしましたが、すべて下記エラーが出て実行されません。 phpスクリプトの先頭で「#!bin/usr/php」を書く方法と、crontabで「* * * * * /usr/bin/php test.php > dev/null」とする方法を試してみましたが両方ともダメでした。 解決索があればご教示下さい。 【エラー内容】 test.php: line 1: ?php: No such file or directory

    • ベストアンサー
    • PHP
  • system()関数の使い方について

    PHPのsystem()関数を使ってWindowsのアプリケーション(C:\Program Files\MeCab\bin\mecab.exe)を実行しようと試行錯誤しています。 試行錯誤しながら以下のようなコードを書いたのですが、何も結果が返ってきません。 <?php $msg = system('C:\Program Files\MeCab\bin\mecab.exe C:\Program Files\MeCab\test-sjis.txt'); echo $msg; ?> 実験環境は、Windows XPにApacheを立ててPHP5をインストールしています。 動かなかった原因についてご指摘をいただけますと大変助かります。どうぞよろしくお願いいたします。

    • 締切済み
    • PHP

専門家に質問してみよう