質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

91.23%

  • PHP

    15718questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。

ブラウザからのバックグラウンド処理起動

解決済

回答 2

投稿 編集

  • 評価
  • クリップ 1
  • VIEW 88

ComachMono

score 2

ブラウザからサーバーへページをリクエストして、バックグラウンド処理を起動したい。

1.ブラウザからサーバーにリクエストするページ(start.php)
<?php
exec("nohup /var/www/htdocs/proc.pl > /dev/null &");
?>
htdocsのアクセス権限drwxrwxr-x

2.バックグラウンド処理させたいperlプログラム(proc.pl)
'#! /usr/bin/perl
while(1){
sleep(5);
}
proc.plの権限は777

3.ブラウザからリクエスト
http://hoge.com/start.php

4.サーバーでproc.plのプロセスが起動しているかチェック
ps -al
4 S     0  5172  3388  0  80   0 - 42604 wait   pts/0    00:00:00 su
4 S     0  5173  5172  0  80   0 - 28200 wait   pts/0    00:00:00 bash
4 R     0  5512  5173  0  80   0 - 27034 -      pts/0    00:00:00 ps

proc.plのプロセスがない。

構成は
nginx+php-fpm

何が間違ってるのでしょうか?

シェルから
php start.php
を実行すると、プロセスが表示されます。
PHPのバージョン 5.6.30

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 2

checkベストアンサー

0

apacheの実行ユーザーが権限をもっていないのかもしれません
sudoなどでapacheに対して強力な実行権限を与えてみてはどうでしょうか?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/05 20:23

    構成はnginx+php-fpmだそうです。

    キャンセル

  • 2018/01/05 20:48

    php-fpmのユーザーは、nginxになっていまして、バックグラウンド処理をさせたいproc.plに、nginxユーザーでも実行できるようにするということでしょうか?
    proc.plは、777なので、だれも実行できませんか?

    キャンセル

  • 2018/01/05 21:35

    とりあえず、
    chown nginx:nginx proc.pl
    にしたところ、
    topコマンドで、プロセスが起動できていることが確認できました。
    proc.plを実行する権限の問題のようです。

    キャンセル

0

apacheユーザーだから 実行パス等が設定されてないのかも?

exec("nohup /var/www/htdocs/proc.pl > /dev/null &");
# ↓
exec("nohup /usr/bin/perl /var/www/htdocs/proc.pl > /dev/null &");
# or
exec("nohup /bin/sh /var/www/htdocs/proc.pl > /dev/null &");


はどうでしょう?

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/01/05 20:48

    アドバイスありがとうございます。しかし、だめでした。

    キャンセル

  • 2018/01/05 20:59

    だとすると
    string exec ( string $command [, array &$output [, int &$return_var ]] )
    の第二引数、第三引数を設定してエラー確認だね(q

    キャンセル

  • 2018/01/05 21:14

    引数を指定して、それぞれをvar_dumpするとarray(0) { } int(0)になりました。$outputが空っぽなのはバックグラウンドで動いているか?$return_varが0になるのでは、正常?

    キャンセル

  • 2018/01/05 21:36

    解決しました。ご協力ありがとうございました。

    キャンセル

15分調べてもわからないことは、teratailで質問しよう!

ただいまの回答率

91.23%

関連した質問

  • 解決済

    [PHP]ユーザの多重クリックを防ぐには

    お買い物サイトを開発・運用している者です。 高齢者のお客様などで注文をダブルクリックしてしまうケースが起きています。 JavaScriptでの回避策は取っているのですが、Jav

  • 受付中

    [超初心者].PHPのフォルダって、どこに...

    .PHPのファイルってどこに保存すればいいのですか? インストールしたPHPのフォルダのどこかに保存しないとPHP動きませんよね? 教えてください。

  • 解決済

    CGI で時間のかかる処理をbackgroundで実行したい

    時間のかかる処理をbackgroundで処理して、ブラウザ上は終了させたいのですが、うまく子プロセスが動いてくれません。Windowsだからでしょうか? Windows 7 II

  • 解決済

    メールマガジンをバックグラウンドにて送信するためには?

    お世話になっております。 PHPにてメールマガジンを送信しようと考えておりますが、処理が重い場合などはバックグラウンドにて送信するよう、いくつかのサイトで勧められていました。 h

  • 解決済

    PHPで時間のかかる処理を実行する方法

    PHPを使ってデータを処理するツールを作っています。 ブラウザ上で条件を指定して実行する簡単なページで、条件により数時間かかる可能性があります。 現状ではタイムアウトが設定

  • 解決済

    PHPで投稿番号表示

    したいこと htmlで作成した入力フォームの情報をPHPに送信。 →PHPでテキストファイルに投稿番号を追加書き込み エラー テキストファイルを確認したら、

  • 解決済

    teratailのログアウトのソースについて

    tarateilのログアウトの分部なのですが、 拡張子(php)が付いてなくてなぜ遷移できるのでしょうか? プチ疑問です。

  • 解決済

    PHP環境構築

    eclipseを使ってphp開発をしたいです。 linaでpdt,xammp全部ついてくるものを入れたのですが、 URLが存在しません と表示されてもうどうにもなりま

同じタグがついた質問を見る

  • PHP

    15718questions

    PHPは、Webサイト構築に特化して開発されたプログラミング言語です。大きな特徴のひとつは、HTMLに直接プログラムを埋め込むことができるという点です。PHPを用いることで、HTMLを動的コンテンツとして出力できます。HTMLがそのままブラウザに表示されるのに対し、PHPプログラムはサーバ側で実行された結果がブラウザに表示されるため、PHPスクリプトは「サーバサイドスクリプト」と呼ばれています。