DigitalOceanクラウドサーバーの下に新しく作成されたCentOSノードでPHPを使用してApacheVirtualHosting環境をセットアップしようとしています。
問題は、仮想ホスティング自体は機能していますが、PHPは機能していませんです。
サーバー設定:
実行した手順:
rootユーザーとしてログインします。
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
に向けると、空白のページが表示されます。
トラブルシューティング
(私がすでに行った/運がなくてチェックしたこと)
DocumentRoot
にアクセスできることを確認します755
で、ファイルは644
です。.php
ページリクエストがありません/var/log/messages
にエラーなし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
私の経験では、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またはブラウザーを介してページにアクセスします。これにより、トラブルシューティングプロセスに役立つエラーメッセージが生成されます。
最初にすべきことは、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で何が起こっているか、または起こっていないか)の鍵になります。