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

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

新規登録して質問してみよう
ただいま回答率
85.50%
CentOS

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

PHP

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

VirtualBox

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

Vagrant

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

Q&A

解決済

2回答

1048閲覧

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

takashi_mh

総合スコア15

CentOS

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

PHP

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

VirtualBox

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

Vagrant

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

0グッド

3クリップ

投稿2017/09/12 03:55

編集2017/09/13 12:01

###前提・実現したいこと

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

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

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

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

###該当のソースコード

  • /var/www/html/index.php

php

1<?php 2echo '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開発者で、サーバ側の知識は乏しい状態です。
追加で情報が必要な場合はご指示ください。
何卒宜しくお願い致します。

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

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

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

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

CHERRY

2017/09/12 04:45

アクセスできなくなった際に Windows の「タスクマネージャー」を起動してみて、CPU や メモリの情報はどうなっているでしょうか?
takashi_mh

2017/09/12 07:06

ご確認頂き有難うございます。上記CPU・メモリ情報について質問に追記させて頂きました。
t_obara

2017/09/12 09:25

pingは、httpdが起動しているゲストOSに届いているのですよね? 事象が発生した時に、httpdが起動しているゲストOS内にsshで入った状態で、次のコマンドを実行「tail -f /var/log/httpd/access_log」とし(Ctrl+Cをするまで戻らない)、ブラウザでアクセスすると、ログが出力されるか否かを確認して見てください。出力されているのであればゲスト側からアクセスされたことは認識されている状態だと思います。その場合原因はよくわかりませんが、メモリ不足が十分に想定されますね。さらに、問題の状況になった時に、現時点で不要なDB環境を落として見ると復旧するか確認して見てはいかがでしょう。
takashi_mh

2017/09/13 11:53

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

2017/09/14 05:48

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

2017/09/14 12:35

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

回答2

0

ベストアンサー

マシンパワーは大丈夫でしょうか?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モジュールは一旦無効にすることをお勧めします。

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

php

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

投稿2017/09/12 11:52

Tomak

総合スコア1652

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takashi_mh

2017/09/13 12: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のダウングレードについても引き続き対応進めさせて頂きます。 何卒宜しくお願いいたします。
Tomak

2017/09/13 14:55

>こちらはホストOSに物理メモリが足りていなければ、仮想マシンに割り当てるメモリを少なくしたほうが良いという内容で認識合っておりますでしょうか…? 物理メモリが足りてても、Windowsの8GBメモリのマシンで例えば、Eclipse立ち上げてVagrant立ち上げてブラウザも立ち上げて...となるとホストマシンのメモリがスワップしているような気がします。 パフォーマンスモニターの画像によると実際にメモリの空き容量はほとんどないように見えます。 また、問題の切り分けのためにも、PECLは使用していないモジュールは無効にして様子を見たほうがいいです。というのも、PECLはものによってはバグがあったり、ロードできるけど使うとクラッシュするようなものも存在します。
takashi_mh

2017/09/14 12:30

ご回答有難うございます、メモリ周りの確認をしていて原因の目星がつきました…! 質問には記載していなかった箇所が原因だったようで、何度もご丁寧に確認頂いたのに本当に申し訳御座いません…。 開発時にIDEからXdebugを使用しており、更にcentos6上にVH設定を行い複数ドメインでの環境を立ち上げておりました。 ホストマシンのメモリをなるべく抑えた際に復旧するか確認すべくIDEを閉じた所、ローディング中だった画面が表示されました。 開発時に使用していたXDebugが誤動作を起こして止まってしまっていたようで、 * 「vagrant.local.com」に対してIDEからXDebugを起動 * 同centos6内の別ドメインにアクセス→事象再現 * XDebug切断→IDE再起動で復旧 の手順を100%再現することが出来ました。 VHによって切り分けてた環境を別サーバで建てるか、XDebugを都度切断するようにしようと思います。 様々な箇所確認させて頂き大変勉強になりました!有難うございました…!
Tomak

2017/09/14 13: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でいろいろなページを閲覧するとハングアップする可能性が大になります。
takashi_mh

2017/09/15 11:39

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

2017/09/15 11:47

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

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 04:22

kitaji0306

総合スコア176

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

takashi_mh

2017/09/12 07:14

記載に不備が有り失礼致しました、 * index.html にアクセスした際はaccess_logへの反映有り * index.html のファイル更新はブラウザ上で反映される 状態となっております。 IP直指定でのアクセスについてもご提案有難うございます! ドメイン指定時と同様に、htmlは表示可能・phpはローディングから進まない 状態となり、特に変化が見られませんでした。 他にも思い当たる点が有りましたらご教授頂けますと幸いです、 何卒宜しくお願いいたします。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問