WordPressの「WP Video Posts」というプラグインで標記の問題が発生しています。
プラグインの中で、ffmpegのインストール状況をチェックする関数が
exec("which ffmpeg",$output,$status);
を実行し、ffmpegのフルパスを取りたいらしいのですが、
このとき$status=1(異常)になって、$outputが空になります。
試しに
exec("which ffmpeg 2>&1",$output,$status);
と書いたところ、$outputに「which: no ffmpeg in ((null))」が返ってきて、
PATHが通っていないことに気づきました。
ちなみに、同じスクリプトをコンソールから叩いた場合には、
正しい結果「/usr/bin/ffmpeg」が取得できます。
Webから実行した時だけ、上手く行きません。
(Webとコンソールは同じユーザーです)
以下、サーバーの情報です。
CentOS 6.4
PHP 5.3.3
nginx 1.4.2
php-fpm
WordPress 3.9.2
WP Video Posts 3.1.5
nginxの実行ユーザー:nginx
php-fpm(PHP)の実行ユーザー:nginx
環境変数「PATH」さえ通れば、問題が解決するのではないかと思っています。
開発方法をご存知の方、ご教示ください。
宜しくお願い致します。
No.4ベストアンサー
- 回答日時:
>環境変数「PATH」さえ通れば、問題が解決するのではないか
まぁそうだと思います。おそらく単にPATHの値がきちんと設定できていないだけではないかと思います。とりあえず最低限まず、「PATH」が通っているのか確認しましょうよ。
で、なぜ自分で確認しないのでしょうか?
PATHを表示させる方法が分からないのですかね。
「echo getenv('PATH');」でも
「phpinfo();」でも何でもいいですよ。
いうまでもないことですけど、問題が起きているのはWeb上なので、
Webサーバーにtest.phpなどを配置して確認してくださいね。
話はそれからです。
で、PATHが意図せぬおかしな値になっているのではないかと思います。そのPATHの値を見れば何をミスったのかが分かる可能性が高いと思います。
たぶん既存のPATHに追加するつもりで間違えて、上書きするような記述をしたとかそういう話だと思います。
この回答への補足
ご回答ありがとうございます。
> で、なぜ自分で確認しないのでしょうか?
残念ながら、getenv('path')もphpinfo()も、ご指摘のtest.php的なものを置いて確認済みです。
質問内に書いていなかったので試していないと勘違いされたのであれば、質問の書き方が悪かったかもしれません。
申し訳ありません。
環境変数「PATH」がPHP内で参照出来ない状態であることは分かっていますので、以下のことは試しました。
それでも解決できないため、質問させていただいています。
-----------------------------
・/etc/rc.d/init.d/php-fpm のスクリプト内でPATHを定義してexport(その後php-fpmを再起動)
・/etc/rc.d/init.d/nginx のスクリプト内でPATHを定義してexport(その後nginxを再起動)
・nginxの.bashrcでPATHを定義してexport(その後nginx,php-fpmを再起動)
-----------------------------
phpinfo()で見た時、_SERVER['PATH']または_ENV['PATH']の値がおかしいのではなく、
phpinfo()に_SERVER['PATH']、_ENV['PATH']そのものが存在しません。
セキュリティの設定かと思いましたが、SELinuxはDisabled、phpのsafe_modeもOFFです。
また、以下は既存のPATHを上書きしてしまったのでは?
という件に対する補足です。
別の方の補足にも書いたのですが、
「今回問題になっているPHPのプログラムは、既製のWordPressのプラグイン」です。
私が書いたものではありません。
他の環境では動作実績もあるようなので、「うっかり上書き」の可能性は極めて低いと考えています。
(本件、プラグイン作者には一応問い合わせしています)
補足を書いた後に当該プラグインのサポートフォーラムを見たところ、作者から回答が来ていました。
http://wordpress.org/support/topic/ffmpeg-not-fo …
プラグインのバグ、ということで次期バージョンで直してくれることになりました。
No.3
- 回答日時:
まぁWEB環境から環境変数をいじるのはかなり危険だと思いますが・・・
セキュリティのしばりでputenvでもおそらくpathは変えられません。
http://php.net/manual/ja/function.putenv.php
むしろ、一度
print getenv('path');
としてどのパスが有効かを確認したうえで、
すでに通っている適当なパスに、シンボリックリンクを貼る方が現実的では?
No.1
- 回答日時:
nginxユーザーのPATH設定をしていないからでしょう。
コンソールで実行した際にうまくいくのは、ログインしているユーザーのPATHが設定されているからです。
/etc/profile にPATH設定を書いておけば全ユーザーに適応されるので、簡単かもしれませんね。
この回答への補足
ご回答ありがとうございます。
nginxユーザーの.bashrcにはPATHが通してあります。
そのため、コンソールからnginxユーザーで同様のスクリプトを実行すると正しく結果が返ってきます。これは質問にも記載したとおりです。
なお、/etc/rc.d/init.d/nginxと/etc/rc.d/init.d/php-fpmにも念のため
PATH=/usr/bin...()省略; export PATH
を記述していますが、それでも解決しませんでした。
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・人生のプチ美学を教えてください!!
- ・10秒目をつむったら…
- ・あなたの習慣について教えてください!!
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・【大喜利】【投稿~9/18】 おとぎ話『桃太郎』の知られざるエピソード
- ・街中で見かけて「グッときた人」の思い出
- ・「一気に最後まで読んだ」本、教えて下さい!
- ・幼稚園時代「何組」でしたか?
- ・激凹みから立ち直る方法
- ・1つだけ過去を変えられるとしたら?
- ・【あるあるbot連動企画】あるあるbotに投稿したけど採用されなかったあるある募集
- ・【あるあるbot連動企画】フォロワー20万人のアカウントであなたのあるあるを披露してみませんか?
- ・映画のエンドロール観る派?観ない派?
- ・海外旅行から帰ってきたら、まず何を食べる?
- ・誕生日にもらった意外なもの
- ・天使と悪魔選手権
- ・ちょっと先の未来クイズ第2問
- ・【大喜利】【投稿~9/7】 ロボットの住む世界で流行ってる罰ゲームとは?
- ・推しミネラルウォーターはありますか?
- ・都道府県穴埋めゲーム
- ・この人頭いいなと思ったエピソード
- ・準・究極の選択
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
コマンドライン実行からのDB接...
-
PHPでサーバーにインストールさ...
-
サーバーモジュールとCGIプロセ...
-
JSのWINOW.CONFI...
-
mysql_queryの処理速度が遅い
-
xmlの宣言文をPHPで出力するには
-
フォントの色を変えるには?
-
配列とオブジェクトの違い
-
PHP session_destroyとsession...
-
mail関数を使用しても送られない。
-
会員サイトに自動ログインして...
-
iframeからのアクセスか、ブラ...
-
iphoneで虫眼鏡の作り方
-
mb_send_mail でスパム扱いとなる
-
リンク先を隠す方法はないでし...
-
2つの画像ファイルが異なるファ...
-
URLが.PHPってどういう...
-
さくらサーバーにて、phpからメ...
-
「クラス関数」「メンバ関数」...
-
PHPのif文でその処理を途中で抜...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
ヒアドキュメントの中で演算子...
-
PHPからバッチファイルの実行
-
mysql複数レコードをまとめて削...
-
PHPでサーバーにインストールさ...
-
Switch文における、returnとbre...
-
PHPでコマンドプロンプトを実行...
-
phpからエクセルのマクロを実行...
-
【PHP】命令は記述順に処理...
-
PHPで、C#のプログラムを実行す...
-
別サーバのプログラムを起動
-
JSのWINOW.CONFI...
-
htmlでsubmitで指定したAction...
-
require_onceが動いていない
-
systemをrootで実行したい
-
PHPで外部プログラムのバックグ...
-
PHPからlhaコマンドを使いたい
-
phpスクリプトのみで定期実行
-
PHPでUNIXシステムコマンド...
-
PHPからexecを使ってGnuPGを実...
-
PHPスクリプトからサービスの再...
おすすめ情報