web-dev-qa-db-ja.com

ApacheVirtualHosting環境で動作するようにPHPを取得できません

DigitalOceanクラウドサーバーの下に新しく作成されたCentOSノードでPHPを使用してApacheVirtualHosting環境をセットアップしようとしています。

問題は、仮想ホスティング自体は機能していますが、PHPは機能していませんです。

サーバー設定:

  • Webサーバー:CentOS6.5とApache/2.2.15
  • PHPバージョン:5.3.3(Apacheモジュールとして使用)

実行した手順:

rootユーザーとしてログインします。

  • Apacheとphpのインストール:yum -y install httpd php
  • 以下のような新しい仮想ホスト構成ファイルを作成します。

ファイル:/etc/httpd/conf.d/vhosts.conf

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>
  • 仮想ホストサイトの新しいディレクトリの作成

以下のように、

mkdir -p /srv/www/example.org/public_html
mkdir -p /srv/www/example.org/logs
  • 以下のように.phpおよび.htmlテストファイルを配置します。

/srv/www/example.org/public_html/(DocumentRoot)の下のファイル

echo "<HTML>It work's</HTML>"      > /srv/www/example.org/public_html/index.html
echo "<?php echo ("It works"); ?>" > /srv/www/example.org/public_html/index.php

次に、ブラウザでindex.htmlを指定すると、機能します。しかし、私がブラウザをindex.phpに向けると、空白のページが表示されます

トラブルシューティング

(私がすでに行った/運がなくてチェックしたこと)

  • Apacheが実行されており、DocumentRootにアクセスできることを確認します
  • すべてのディレクトリは755で、ファイルは644です。
  • Apacheアクセスログを確認しました。 htmlページリクエストには200のステータスコードがありますが、アクセスログに.phpページリクエストがありません
  • ApacheまたはPHPエラーログ、/var/log/messagesにエラーなし
  • Vhost構成ファイルにphp_admin_flag engine onを追加しようとしました

以下の/etc/httpd/conf.d/php.confの内容も参照してください。

<IfModule prefork.c>
  LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
  LoadModule php5_module modules/libphp5-zts.so
</IfModule>
AddHandler php5-script .php
AddType text/html .php
DirectoryIndex index.php
1
hashbrown

私の経験では、PHPは、重大な根本的なエラーが発生すると空白のページをレンダリングします。通常、修正は簡単ですが、残念ながら、通常、Apacheログには何も記録されません。PHPログ、またはsyslogにより、トラブルシューティングプロセスが困難になります。

以下を使用してphp.ini構成ファイルを見つけます。

php -i | grep "php.ini"

これにより、次のようなものが生成されます。

Configuration File (php.ini) Path => /etc
Loaded Configuration File => /etc/php.ini

この構成ファイル(この場合は/etc/php.ini)をお気に入りのテキストエディターで編集し、エラーと起動エラーの表示がオンになっていることを確認します。エントリは次のようになります。

display_errors = On
display_startup_errors = On

最後に、Apacheを再起動して、新しいPHP構成を読み取り、curlまたはブラウザーを介してページにアクセスします。これにより、トラブルシューティングプロセスに役立つエラーメッセージが生成されます。

1
PaulR

最初にすべきことは、Apache構成で設定したApacheエラーログを確認することです。以下にコピー:

NameVirtualHost *:80
<VirtualHost *:80>
     ServerAdmin [email protected]
     ServerName example.org
     ServerAlias www.example.org
     DocumentRoot /srv/www/example.org/public_html/
     ErrorLog /srv/www/example.org/logs/error.log
     CustomLog /srv/www/example.org/logs/access.log combined
</VirtualHost>

PHPはApacheで実行されるため、ポップアップするエラーはすべてサーバーログに表示されます。サーバーにログインして、次のようにtailを使用することをお勧めします。

tail -f -n 200 /srv/www/example.org/logs/error.log

しかし、それはあなたのための一般的なApacheログですか?それとも、そのDigitalOceanの構成ですか? /srv/www/example.org/logs/のパスはかなり奇妙に見えるからです。標準のLinuxでは、次のような場所にあります。

tail -f -n 200 /var/log/Apache2/error.log

ログが実際に送信されている場所に関係なく、サーバー上のPHP&Apacheで何が起こっているか、または起こっていないか)の鍵になります。

0
JakeGould