• 締切済み

PHPでバックグランド処理

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

  • enshi
  • お礼率68% (43/63)
  • PHP
  • 回答数1
  • ありがとう数1

みんなの回答

回答No.1

エラーメッセージの記載がないので考えられる理由の一つとして おそらくsafeモードで実行されている為だと思われます。 共有サーバーなどではセキュリティーを考慮し PHPエンジンをsafemodeで起動し、特定のコマンドを実行できないように する事ができます。 safeモードで起動されている場合はPHP.ini(httpd.conf)内でsafe_mode_exec_dir値に設定されたディレクトリの中にある実行プログラムしか実行できません。 おそらくファイル名から推測するとメルマガの自動配信システムか何かを使用されているのでしょうか。 safemodeの解除はサーバー管理者以外はできませんし、通常はセキュリティ保護の為 断られます。 もし、cronが利用できる環境であれば一定時間後とに起動する設定にして 代用するしかないでしょう。

enshi
質問者

お礼

解答ありがとうございます!(^▽^) phpinfo()で調べてみたところsafemodeで起動しているようです(ノД`) safe_mode_exec_dirの値は/usr/local/bin/phpでした><

関連するQ&A

  • 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
  • バックグラウンド処理について

    環境: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
  • 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
  • PHPバックグランド処理について

    初めて、質問させて頂きます。 コミュニティーサイトを運営しているのですが、登録メンバーが増えてきてメール送信の処理に時間がかかるようになってきました。 現在は、MYSQLのDBから 条件に会った人のアドレスを検出させて whileのループでmail関数で送信しています。 $result=mysql_query("**************"); while($value = mysql_fetch_array($result)){ $MAIL=$value["MAIL"]; mail($MAIL,$sbj,$msg,$header,"-fmail@mail.com"); } バックグラウンドで処理させる方法をインターネットで調べていたら 下記のURLにたどりつきました。 http://www.itboost.co.jp/phptips/view.php?fCID=21 呼び出しプログラムを mail.php 送信プログラムを send.php とし、mail.phpから ある条件下で send.phpを実行させるために system("send.php $1 $2 $3 $4 $5 > index.php &"); という感じにしてみましたが、うまくいきません。 パスの問題なのでしょうか?それとも根本的に間違っているのでしょうか? 解決策や、他の方法があれば教えてください。 お願いします。 環境:レンタルサーバ OS Redhat Linux Server Apache DB MYSQL PHP4.12 qmailは入っていません。

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

    PHPでバックグランドで処理させたいと考えています。 300通前後のメールを一括送信するために、この送信処理をバックグランドで処理させたいと考えています。 色々調べて、 system()関数とexec関数を知りました。 しかし、動きが上手くいきません。解決策や糸口をご教授頂けないでしょうか? メールを送るファイル: back.php フロントで実行するファイル:mai.php で下記の様に書きました。 back.php <?php require_once('Mail.php'); $params = array( "host" => "smtp.gmail.com", "port" => 587, "auth" => true, "username" => "****@gmail.com", "password" => "****" ); $mailObj = Mail::factory("smtp",$params); mb_language('ja'); mb_internal_encoding('utf-8'); $rec ='**_com2@yahoo.co.jp'; $header = array( "To"=>$rec, "From"=>"admin@**-terakoya.jp", "Subject"=>mb_encode_mimeheader('これは件名') ); $com = 'メール本文'; $com = mb_convert_encoding($com,"UTF-8","auto"); $mes =$mailObj -> send($rec,$header,$com); if(PEAR::isError($mes)){ echo '<pre>'; var_dump($mes->getMessage()); echo '</pre>'; } ?> 実行するファイル mail.php var_dump(system("php www/htdocs/ac/back.php > /dev/null &")); です。 パスの指定方法が問題なのかもしれないと思い色々試してみましたが最終的には無理でした。 ちなみに、本番サーバーの環境とXampp環境では何か違う方法が必要なのでしょうか? 上記例は、本番サーバーで記述した物です。 どうぞご教授お願いします。

    • ベストアンサー
    • 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
  • perlのsystem関数でrsyncが動かない

    perlのsystem関数を使って、外部サーバーのフォルダ(999)をバックアップしたいと思っています。 公開鍵を設定して、コマンド入力では動きます。 $ rsync -av user1@xxx.xxx.xxx.xxx:/home/user1/public_html/hp/999 /home/user2/public_html/hp/ これをperlのsystem関数に入れると動きません。 $retcodeは-1になります。 apacheのエラーログには何も出ていません。 何が原因で動かないのでしょうか? よろしくお願いします。 #!/usr/bin/perl $retcode=system ("rsync -av user1@xxx.xxx.xxx.xxx:/home/user1/public_html/hp/999 /home/user2/public_html/hp/"); print "Content-type: text/html\n\n"; print"code: $retcode"; exit;

    • ベストアンサー
    • Perl
  • PHPのバックグラウンド処理でタイムエラー?

    PHPで定期的にサイトの更新を把握するため、fopenで呼び出すプログラムを作っています。 SYSTEM関数でバックグラウンド処理を行っているのですが1時間くらいするといつのまにか処理がストップしてファイルへの出力がとまってしまいます、タイムエラーにしては毎回停止する時間が違うので他の原因のような気がするのですが・・・ なにが原因かわかる方いませんでしょうか?回答よろしくお願いします。

    • ベストアンサー
    • PHP
  • cronでPHP実行

    お世話になります。 OSはクライアントの為、恐縮ながら何を使用しているか不明となっております。 PHPバージョンは5.1.6です。 cronを使用して、毎日特定の時間に、メールを配信するPHPスクリプトを実行しようと試みているのですが、エラーメールが返ってきてしまいます。 因みに、URLを直接指定して実行した場合は正常にメールが配信されます。 設定方法は、crontab -e で 0 12 * * * /usr/lib/php -q /home/hoge/public_html/mail.php と記述しております。 返ってくるエラーメールの内容は、以下の通りです。 Content-Type: text/plain; charset=UTF-8 Auto-Submitted: auto-generated X-Cron-Env: <SHELL=/bin/sh> X-Cron-Env: <HOME=/home/hoge> X-Cron-Env: <PATH=/usr/bin:/bin> X-Cron-Env: <LOGNAME=hoge> X-Cron-Env: <USER=hoge> Message-Id: <xxxxxx@xxxxxxxxxx> Date: Sun, 28 Sep 2008 12:00:01 +0900 (JST) /bin/sh: /home/hoge/public_html/mail.php: Permission denied 以上、対策方法についてご存知の方がおられましたら、ご教授よろしくお願い致します。

  • PHPで外部プログラムのバックグラウンド処理(Windows)

    よろしくお願いします。 PHPのバージョン4でWindowsです。 現在***.exeをsystem()で実行しています。 この***.exeの処理が長い時で、10分位かかってしまうので、バックグラウウンドで処理をしたいと考えています。 コマンドプロンプトで >start ***.exe ~ を実行したところ、うまいことバックグラウンドで処理できました。 しかし、system()で上記のコードを実行したら一瞬黒い画面が出るだけで***.exeが実行されませんでした。 なにがだめなのか全然見当もつきません… 実現できればどんな方法でもかまわないので、 次の方法も試しました。 1. a.phpでsystem(">b.php") b.phpを呼び出し b.phpでsystem(">***.exe")を実行 結果:***.exeは実行されるのですがバックグラウンドで処理されない。 2. コマンドプロンプトでIEを開いてa.phpにアクセス a.phpでjavascript window.openでb.phpをオープン b.phpでsystem(">***.exe")を実行 b.phpをwindow.closeで閉じる 処理は出来たのですが、a.phpが残ってしまう…(消せない、消し方がわからない) a.phpが消せればこの方法でもいいのですが… とにかく実現できればいいのですが… わかる方がいたら教えてくださいお願いします。

    • 締切済み
    • PHP

専門家に質問してみよう