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

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

ただいまの
回答率

91.45%

  • PHP

    14842questions

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

  • CentOS

    1963questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Vagrant

    875questions

    Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

  • VirtualBox

    479questions

    VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。

Vagrant環境のPHPファイルにブラウザからアクセス出来なくなる

解決済

回答 2

投稿 2017/09/12 12:55 ・編集 2017/09/13 21:01

  • 評価
  • クリップ 3
  • VIEW 312

takashi_mh

score 9

前提・実現したいこと

Vagrant-VirtualBOXにて作成したローカル仮想環境にて、
PHPでの開発を行っています。

起動直後は問題なくPHPの実行が行えているのですが、
3時間程経つとブラウザからのアクセスが出来なくなる事があり困っています。

発生している問題・エラーメッセージ

  • ブラウザにてアクセスするとローディングから進まない

該当のソースコード

  • /var/www/html/index.php
<?php
echo 'PHP works!';
  • Vagrantfile
Vagrant.configure(2) do |config|
  config.vm.box = "centos6_v1.0"
  config.vm.box_check_update = false

  config.vm.define "centos6" do |centos6|
    centos6.vm.box = "centos6_v1.0"
    centos6.vm.network "private_network", ip: "192.168.33.10"
    centos6.vm.synced_folder "D:/Git/Contents/", "/vagrant/data/"

  end

  config.vm.define "db" do |db|
    db.vm.box = "db_v1.0"
    db.vm.network "private_network", ip: "192.168.33.20"
    config.vm.provision :shell, run: "always", :inline => <<-SHELL
      echo "-------provision start-------";
      sudo service httpd restart
      echo "--------provision end--------";
      exit 0
    SHELL
  end

  config.vm.provider "virtualbox" do |vb|
      vb.customize ["modifyvm", :id, "--memory", "2048"]
      vb.customize ["modifyvm", :id, "--natdnsproxy1", "on"]
      vb.customize ["modifyvm", :id, "--natdnshostresolver1", "on"]
  end

  command = "ln -s /opt/VBoxGuestAdditions-4.3.26/lib/VBoxGuestAdditions /usr/lib/VBoxGuestAdditions || true"
  config.vm.provision "shell", inline: command

end
  • Hosts
192.168.33.10    vagrant.local.com

試したこと

[エラー事象発生前]

  • 上記index.phpがブラウザにて正常に表示される(httpd://vagrant.local.com/index.php)
  • HelloWorldのみ記述したindex.htmlがブラウザにて正常に表示される

[エラー事象発生中]

  • 上記index.phpがブラウザにて読み込み中のままいくら待っても進まない
  • HelloWorldのみ記述したindex.htmlがブラウザにて正常に表示される
  • /var/log/httpd/配下のaccess_log,error_logはindex.phpに関しては伸びていない(index.htmlへのaccess_logは正常に伸びる)
  • ホストOS(Windows)のコマンドプロンプトからのpingは通る
  • 起動しているサーバ間centos6-db間でのpingは通る
  • teratermからのサーバへのログイン・アクセスは可能
  • teratermからのphp index.phpの実行はPHP works!が正常に返る
  • Vagrantfile内「db」の環境のみvagrant halt dbで落としても復旧しない
  • Vagrant reloadを行っても復旧しない
  • PC自体の再起動後Vagrant upを行うと復旧する

補足情報(言語/FW/ツール等のバージョンなど)

■ホスト側

  • Windows 7 64bit
  • Vagrant 1.7.4
  • Virtual BOX 4.3.30

▼タスクマネージャ情報
▽平常時/エラー時

  • プロセス 123/139
  • CPU使用率 8%/12%
  • 物理メモリ 51%/79%
    エラー発生時のタスクマネージャ

■ゲスト側

  • Apache 2.4.7
  • PHP 5.3.3

▽pear list

[root@vagrant-centos65 ~]# pear list
Installed packages, channel pear.php.net:
=========================================
Package              Version State
Archive_Tar          1.3.7   stable
Config               1.10.11 stable
Console_Getopt       1.2.3   stable
Crypt_Blowfish       1.0.1   stable
HTML_Template_IT     1.3.0   stable
MDB2                 2.4.1   stable
MDB2_Driver_mysql    1.4.1   stable
MDB2_Driver_mysqli   1.4.1   stable
MIME_Type            1.2.1   stable
Net_IPv4             1.3.4   stable
Net_Socket           1.0.9   stable
Net_UserAgent_Mobile 1.0.0   stable
PEAR                 1.9.4   stable
PEAR_Frontend_Web    0.7.5   beta
Structures_Graph     1.0.4   stable
XML_Parser           1.3.2   stable
XML_RPC              1.5.4   stable
XML_Serializer       0.20.0  beta
XML_Util             1.2.1   stable


▽ldd /usr/lib64/httpd/modules/libphp5.so

[root@vagrant-centos65 ~]# sudo ldd /usr/lib64/httpd/modules/libphp5.so
        linux-vdso.so.1 =>  (0x00007fff595ff000)
        libcrypt.so.1 => /lib64/libcrypt.so.1 (0x00007f8126ab6000)
        librt.so.1 => /lib64/librt.so.1 (0x00007f81268ae000)
        libmysqlclient.so.18 => /usr/lib64/mysql/libmysqlclient.so.18 (0x00007f81262df000)
        libmcrypt.so.4 => /usr/lib64/libmcrypt.so.4 (0x00007f81260a6000)
        libltdl.so.7 => /usr/lib64/libltdl.so.7 (0x00007f8125e9d000)
        libfreetype.so.6 => /usr/lib64/libfreetype.so.6 (0x00007f8125bff000)
        libpng12.so.0 => /usr/lib64/libpng12.so.0 (0x00007f81259d9000)
        libz.so.1 => /lib64/libz.so.1 (0x00007f81257c3000)
        libjpeg.so.62 => /usr/lib64/libjpeg.so.62 (0x00007f8125572000)
        libcurl.so.4 => /usr/lib64/libcurl.so.4 (0x00007f812531d000)
        libm.so.6 => /lib64/libm.so.6 (0x00007f8125099000)
        libdl.so.2 => /lib64/libdl.so.2 (0x00007f8124e94000)
        libnsl.so.1 => /lib64/libnsl.so.1 (0x00007f8124c7b000)
        libxml2.so.2 => /usr/lib64/libxml2.so.2 (0x00007f8124928000)
        libssl.so.10 => /usr/lib64/libssl.so.10 (0x00007f81246bb000)
        libcrypto.so.10 => /usr/lib64/libcrypto.so.10 (0x00007f81242d8000)
        libc.so.6 => /lib64/libc.so.6 (0x00007f8123f44000)
        libfreebl3.so => /lib64/libfreebl3.so (0x00007f8123d40000)
        libpthread.so.0 => /lib64/libpthread.so.0 (0x00007f8123b23000)
        /lib64/ld-linux-x86-64.so.2 (0x00007f812798c000)
        libstdc++.so.6 => /usr/lib64/libstdc++.so.6 (0x00007f812381d000)
        libgcc_s.so.1 => /lib64/libgcc_s.so.1 (0x00007f8123606000)
        libidn.so.11 => /lib64/libidn.so.11 (0x00007f81233d4000)
        libldap-2.4.so.2 => /lib64/libldap-2.4.so.2 (0x00007f8123184000)
        libgssapi_krb5.so.2 => /lib64/libgssapi_krb5.so.2 (0x00007f8122f3f000)
        libkrb5.so.3 => /lib64/libkrb5.so.3 (0x00007f8122c58000)
        libk5crypto.so.3 => /lib64/libk5crypto.so.3 (0x00007f8122a2c000)
        libcom_err.so.2 => /lib64/libcom_err.so.2 (0x00007f8122827000)
        libssl3.so => /usr/lib64/libssl3.so (0x00007f81225e7000)
        libsmime3.so => /usr/lib64/libsmime3.so (0x00007f81223bb000)
        libnss3.so => /usr/lib64/libnss3.so (0x00007f812207b000)
        libnssutil3.so => /usr/lib64/libnssutil3.so (0x00007f8121e4f000)
        libplds4.so => /lib64/libplds4.so (0x00007f8121c4b000)
        libplc4.so => /lib64/libplc4.so (0x00007f8121a45000)
        libnspr4.so => /lib64/libnspr4.so (0x00007f8121807000)
        libssh2.so.1 => /usr/lib64/libssh2.so.1 (0x00007f81215df000)
        liblber-2.4.so.2 => /lib64/liblber-2.4.so.2 (0x00007f81213cf000)
        libresolv.so.2 => /lib64/libresolv.so.2 (0x00007f81211b5000)
        libsasl2.so.2 => /usr/lib64/libsasl2.so.2 (0x00007f8120f9a000)
        libkrb5support.so.0 => /lib64/libkrb5support.so.0 (0x00007f8120d8f000)
        libkeyutils.so.1 => /lib64/libkeyutils.so.1 (0x00007f8120b8c000)
        libselinux.so.1 => /lib64/libselinux.so.1 (0x00007f812096c000)

Vagrantfile内、「centos6」のサーバのみで開発を行っていた際はそのような事象は発生していなかったのですが、
DB環境用に「db」も立ち上げ2台構成にしてから上記事象が発生し始めてしまいました。
丸一日立ち上げてても問題ない日が有れば、3時間毎に再起動が必要な日も有ります。

再起動で復旧するためPC自体のメモリ等の問題なのかと思うのですが、
原因が分からない為対処が出来ず…。

当方WEB開発者で、サーバ側の知識は乏しい状態です。
追加で情報が必要な場合はご指示ください。
何卒宜しくお願い致します。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正、ベストアンサー選択の依頼

  • takashi_mh

    2017/09/13 20:53

    ご確認頂き有難うございます。access_logについては確認済みの情報でしたので、DB環境を落としての確認について質問に追記させて頂きました。

    キャンセル

  • t_obara

    2017/09/14 14:48

    ポイントはhtmlでのアクセスはOK、phpへのアクセスはNGということですね。なので、ネットワークは問題がなく、メモリなどのリソース不足などが問題と想定されますね。ただ、ローカルにログインでき、単独でPHPプロセスも起動可能ということで切り分けが非常に困難な状況でもあります。この問題切り分けに時間をかけるのと、機器構成を変更してDBとWebを分けてしまうのとどちらを優先するかかもしれません。ちなみに、ゲスト内のCPU・メモリの変化状況は確認されていますか?最初の頃と、問題発生時とで変化は見受けられませんか?

    キャンセル

  • takashi_mh

    2017/09/14 21:35

    メモリには変化はほぼ無かったのですが、質問記載外の部分で原因を見つける事が出来ました。お手数おかけしてしまい申し訳御座いません。問題切り分けの目線で調べ方のご意見頂き大変為になりました!ご確認頂き有難うございました。

    キャンセル

回答 2

checkベストアンサー

+1

マシンパワーは大丈夫でしょうか?2GBのメモリを割り振っていますが、当然物理メモリが足りなくなると不具合を起こすと思います。また、Virtual BOX 4.3.30VBoxGuestAdditions-4.3.26なので、それぞれバージョンを最新版に揃えてみてはいかがでしょうか。

Vagrant reloadを行っても復旧しない

とあるので、なんとも怪しげな不具合ですがVirtualBoxを最新版にするところから始めてみてはいかがでしょうか。

普通に考えると、コマンドライン(CLI)のphpもApacheのHTMLも問題ないということは、ApacheのDSOモジュールの不具合でPHPのモジュール実行ができなくなっている可能性があります。
CentOS 6だと、Apache2.4は外部レポジトリだと思います。Apache2.2が標準レポジトリのRPMのはずなので、Apache2.2にダウングレードを検討してみてはいかがでしょうか。

また、PHPの必要のないPECLモジュールは一旦無効にすることをお勧めします。

起動できているということなので、ライブラリのリンク切れではないと思うのですが、念のため確認しておいたほうが良いかもしれません。

ldd /usr/lib64/httpd/modules/libphp5.so
##PECLモジュールも確認しておいたほうがよいです。

投稿 2017/09/12 20:52

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/09/13 21:06

    様々な方面からのご意見頂き大変助かります…!
    順に試させて頂いておりますが、ご指摘いただいた点について2点ほど質問させて頂きたいです。

    >当然物理メモリが足りなくなると不具合を起こすと思います。
    こちらはホストOSに物理メモリが足りていなければ、仮想マシンに割り当てるメモリを少なくしたほうが良いという内容で認識合っておりますでしょうか…?

    >PHPの必要のないPECLモジュールは一旦無効
    質問の方に「pear list」「ldd /usr/lib64/httpd/modules/libphp5.so」の実行結果を追加させて頂きました。
    知識不足も有り異常・不要なものが有るように感じられなかったのですが、怪しい箇所が有れば是非お教えいただけますと幸いです…!

    現在以下の通りバージョンアップを行いましたが、現在も同事象再現中です。
    * Virtual BOX 4.3.30→5.1.26
    * Vagrant 1.7.4→2.0.0
    * VBoxGuestAdditions 4.3.26→5.1.26
    Apacheのダウングレードについても引き続き対応進めさせて頂きます。
    何卒宜しくお願いいたします。

    キャンセル

  • 2017/09/13 23:55

    >こちらはホストOSに物理メモリが足りていなければ、仮想マシンに割り当てるメモリを少なくしたほうが良いという内容で認識合っておりますでしょうか…?

    物理メモリが足りてても、Windowsの8GBメモリのマシンで例えば、Eclipse立ち上げてVagrant立ち上げてブラウザも立ち上げて...となるとホストマシンのメモリがスワップしているような気がします。
    パフォーマンスモニターの画像によると実際にメモリの空き容量はほとんどないように見えます。

    また、問題の切り分けのためにも、PECLは使用していないモジュールは無効にして様子を見たほうがいいです。というのも、PECLはものによってはバグがあったり、ロードできるけど使うとクラッシュするようなものも存在します。

    キャンセル

  • 2017/09/14 21:30

    ご回答有難うございます、メモリ周りの確認をしていて原因の目星がつきました…!
    質問には記載していなかった箇所が原因だったようで、何度もご丁寧に確認頂いたのに本当に申し訳御座いません…。

    開発時にIDEからXdebugを使用しており、更にcentos6上にVH設定を行い複数ドメインでの環境を立ち上げておりました。
    ホストマシンのメモリをなるべく抑えた際に復旧するか確認すべくIDEを閉じた所、ローディング中だった画面が表示されました。
    開発時に使用していたXDebugが誤動作を起こして止まってしまっていたようで、
    * 「vagrant.local.com」に対してIDEからXDebugを起動
    * 同centos6内の別ドメインにアクセス→事象再現
    * XDebug切断→IDE再起動で復旧
    の手順を100%再現することが出来ました。
    VHによって切り分けてた環境を別サーバで建てるか、XDebugを都度切断するようにしようと思います。

    様々な箇所確認させて頂き大変勉強になりました!有難うございました…!

    キャンセル

  • 2017/09/14 22:07

    なるぼどですね。限定がわかってよかったです。

    >IDEからXDebugを起動
    普通はXdebugはブラウザのアドオン(Xdebug helperなど)からON/OFFします。下記参考になればと思います。

    php.iniのxdebugの設定で autostart = off にして remote_connect_back = 1 にすれば、CookieでXdebugの制御ができるようになりますのでブラウザからON/OFFが可能になります。

    php.ini (xdebugの設定)
    ----
    xdebug.remote_enable = On
    xdebug.remote_autostart = Off
    xdebug.remote_handler = "dbgp"
    xdebug.remote_mode = req
    xdebug.remote_port = 9000
    xdebug.remote_connect_back = 1

    また、EclipseやPDTを使っているIDEならPHPデバッグの設定で「最初の行でブレーク」という設定があると思います。これをOFFにしておかないと、Xdebug ONでいろいろなページを閲覧するとハングアップする可能性が大になります。

    キャンセル

  • 2017/09/15 20:39

    IDEはNetBeansを使用しております。
    ご指摘頂いたxdebugの設定周りを見直した所「remote_autostart=On」になっていた為、そちらをOffにした所VHを跨いだアクセスをしても事象発生しなくなってくれました…!
    重ね重ね本当に有難うございました!

    キャンセル

  • 2017/09/15 20:47

    解決できたようでなによりです。

    キャンセル

0

HelloWorldのみ記述したindex.htmlがブラウザにて正常に表示される
/var/log/httpd/配下のaccess_log,error_logは伸びていない

上記内容からだとApacheにアクセスは来ていないようですので、実際にはindex.htmlも正常に表示されていないのではないでしょうか?(ファイルを変更してみて反映されているかどうか等の確認が必要)

httpd://vagrant.local.com/index.php
http://192.168.33.10/index.php
http://192.168.33.10/index.html

名前ベースではなく、IP直指定でアクセスしてみてはどうでしょうか?

投稿 2017/09/12 13:22

  • 回答の評価を上げる

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

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

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

  • 回答の評価を下げる

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

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

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

  • 2017/09/12 16:14

    記載に不備が有り失礼致しました、
    * index.html にアクセスした際はaccess_logへの反映有り
    * index.html のファイル更新はブラウザ上で反映される
    状態となっております。

    IP直指定でのアクセスについてもご提案有難うございます!
    ドメイン指定時と同様に、htmlは表示可能・phpはローディングから進まない 状態となり、特に変化が見られませんでした。

    他にも思い当たる点が有りましたらご教授頂けますと幸いです、
    何卒宜しくお願いいたします。

    キャンセル

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

ただいまの回答率

91.45%

関連した質問

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

  • PHP

    14842questions

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

  • CentOS

    1963questions

    CentOSは、主にRed Hat Enterprise Linux(RHEL)をベースにした、フリーのソフトウェアオペレーティングシステムです。

  • Vagrant

    875questions

    Vagrantは、VirtualBox上の仮想マシンを コマンドラインから作成してくれるソフトウェアです。 ビルド環境など容易に構築が可能です。

  • VirtualBox

    479questions

    VirtualBoxは、現在米オラクル社が開発している、 x86仮想化ソフトウェア・パッケージの一つです。