- 締切済み
phpからlinuxコマンドを実行したい
CentOS6で test.phpを作成しました。 <?php $buf = ''; exec("yum list installed | grep php | cut -d' ' -f1", $buf); var_dump($buf[0]); ?> コマンド:php test.php を実行したのですが、実行結果が帰ってきません。 (当然phpをインストールしているので、パッケージは導入されています。) 多分「’」がうまく機能してないのだと思うのですが、 どのように記述すればコマンドの実行結果が表示されるのでしょうか ご教授お願いします。
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- Wr5
- ベストアンサー率53% (2173/4061)
>このスクリプトを実行していただいたのでしょうか? 基本的にはコピペです。 だたし、var_dump()の前にある全角空白2つは削除しましたが。 全角空白があると… PHP Fatal error: Call to undefined function var_dump() in /tmp/test.php on line 4 ってエラーになるようですな。 ちなみに、出力される結果は期待通りですか? 「string(8) "php.i686"」ですが。 試した環境でのyum list installed~の結果は、 php.i686 php-ZendFramework.noarch php-bcmath.i686 php-cli.i686 php-common.i686 php-gd.i686 php-mbstring.i686 php-mysql.i686 php-pdo.i686 php-pear.noarch php-php-gettext.noarch php-process.i686 php-xml.i686 です。まぁ、どれかのパッケージが影響している…とも思えませんが。 >[root@test ~]# php test.php >[root@test ~]# >と結果が返ってくるので、時間がかかっていることは無さそうです。 何も返さない。というのはヘンですね。 http://kur.jp/2009/12/05/php-step/ の方法でデバッグしてみる。とか。 >これでは、PATHは通ってないことになるのでしょうか 「phpから見て」ってコトなので、 php -i で、PATH => の行がどうなっているか?かと。 yumやgrep、cutのある場所が出てくれば問題ないとは思われますが。
- Wr5
- ベストアンサー率53% (2173/4061)
VMware PlayerのCentOS6.3で実行してみました。 起動後の初回が… ----------------------------------------------------------------- [root@CentOS6 tmp]# time php test.php string(8) "php.i686" real 0m24.024s user 0m1.393s sys 0m16.302s [root@CentOS6 tmp]# ----------------------------------------------------------------- で、2回目が ----------------------------------------------------------------- [root@CentOS6 tmp]# time php test.php string(8) "php.i686" real 0m1.540s user 0m0.710s sys 0m0.410s [root@CentOS6 tmp]# ----------------------------------------------------------------- でした。
補足
結果情報ありがとうございます。 <?php $buf = ''; exec("yum list installed | grep php | cut -d' ' -f1", $buf); var_dump($buf[0]); ?> このスクリプトを実行していただいたのでしょうか?
- Gaffgarion
- ベストアンサー率45% (45/99)
yum list installed | grep php | cut -d' ' -f1 が単独で動くのであれば、 phpから見てyumへのパスが通ってない、実行権限がない、が考えられます。
補足
情報ありがとうございます echo $PATH /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin これでは、PATHは通ってないことになるのでしょうか
- Wr5
- ベストアンサー率53% (2173/4061)
>を実行したのですが、実行結果が帰ってきません。 単純に時間が掛かっているだけ…ではいですか?
補足
情報ありがとうございます。 [root@test ~]# php test.php [root@test ~]# と結果が返ってくるので、時間がかかっていることは無さそうです。
お礼
補足ありがとうございます。 参考URLありがとうございます。 一度やってみようと思います。 PATHは、PATH => /usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin:/root/bin という結果でした。