新しくセットアップされたdigitalOceanクラウドサーバー(CentOS)に、phpとApacheをインストールしました。 Webサーバーは正常に動作しています。
_[root@a2m5cent01 httpd]# service httpd status
httpd (pid 11232) is running...
[root@a2m5cent01 httpd]# php --version | head -1
PHP 5.3.3 (cli) (built: Dec 11 2013 03:29:57)
_
しかし、PHPページにアクセスしようとすると、ブラウザーに空白ページ(白いページ)が表示されます。
トラブルシューティングのためにこれまでに行ったことは次のとおりです。
<?php phpinfo(); ?>
。ブラウザから表示すると、空白のページが表示されます。.html
_ページを配置し、ブラウザで正常に表示されるので、Apacheは機能し、ディレクトリは正しいです。/etc/php.ini
_で、_display_errors
_ディレクティブをOn
に変更しました。まだ空白のページ/etc/httpd/conf/httpd.conf
_)でこの行_Include conf.d/*.conf
_が見つかりました。 _conf.d
_ディレクトリ内には、行_php.conf
_を含む_LoadModule php5_module modules/libphp5.so
_ファイルがあります。この.soファイルが実際にこの場所に存在することを確認しました。AddHandler php5-script .php
_および_AddType text/html .php
_次に、なぜブラウザ上に常に空白のページが表示されるのですか?他に何が欠けていますか?
[〜#〜] edit [〜#〜] @Nathanからの提案に基づいて、
/etc/php.ini
_によると、php error_logはsyslog
として配置されています。だから_/var/log/messages
_をチェックしましたが、PHPエラーメッセージが見つかりませんでしたphpinfo()
呼び出しを含むphpファイルに通常のHTML
を入れます。興味深いことに、通常のHTMLテキストでさえ来ていないことがわかりました。 Itstillは空白ページを生成します。access
ログを確認しました。驚き! PHP私がブラウザにロードしようとしたファイルにはGET
リクエストはありません。しかし[〜#〜] get [〜#〜]すべてのnon-phpファイルのリクエストは200のリターンコードであります。Apacheはnot PHPファイルへのアクセス要求をログに記録します。なぜそれが起こるのでしょうか?
いつかはありましたが、この質問に戻って、ディレクトリ権限の設定に問題があることを更新したいと思いました。
私が使用していたFPMユーザーには、index.php
ファイルはWebルートにあります。
将来これらの問題を回避するために、DigitalOceanボックスでWebサーバーを自動的に作成および構成する自動bashスクリプトを作成しました。こちらをご覧ください https://github.com/akash-mitra/fairy
このスクリプトは自動的に、
phpinfo()スクリプトを確認してください。
<?php
phpinfo();
?>
最初の「?」の後ろに「php」がありません空白のページが表示されます
Apacheでのphpインストールに問題があると思います。それがあなたのウェブサーバーにphpページを表示できない理由です。 httpd、php、php-fpm、php-cliなどの既存のアプリをすべて削除し、この順序でisntallを削除します
yum install httpd -y
yum install php php-common php-cli php-Gd php-curl php-fpm -y
その後、必ずhttpdサーバーを再起動してください。
service httpd restart
Mod_fastcgiをインストールします。
yum install mod_fastcgi
サービスを開始します。
service php-fpm start
Apacheを再起動します。
service httpd restart
5。PHP-FPMを使用したApacheの設定
Fastcgi.confファイルを開きます。
nano /etc/httpd/conf.d/fastcgi.conf
これをファイルの最後に追加します。
<IfModule mod_fastcgi.c>
DirectoryIndex index.html index.shtml index.cgi index.php
AddHandler php5-fcgi .php
Action php5-fcgi /php5-fcgi
Alias /php5-fcgi /usr/lib/cgi-bin/php5-fcgi
FastCgiExternalServer /usr/lib/cgi-bin/php5-fcgi -Host 127.0.0.1:9000 -pass-header Authorization
</IfModule>
「FastCgiWrapper」の後に検索し、「off」に設定されていることを確認してからファイルを保存します。
/ usr/lib/cgi-bin /ディレクトリが存在する必要があるため、作成します。
mkdir /usr/lib/cgi-bin/
Mod_phpがインストールされて有効になっている場合、無効にする必要があるため、/ etc/httpd/conf.d/php.confで構成を開きます。
nano /etc/httpd/conf.d/php.conf
AddHandlerおよびAddType行をコメントアウトして、次のようにします。
#
# PHP is an HTML-embedded scripting language which attempts to make it
# easy for developers to write dynamically generated webpages.
#
<IfModule prefork.c>
LoadModule php5_module modules/libphp5.so
</IfModule>
<IfModule worker.c>
LoadModule php5_module modules/libphp5-zts.so
</IfModule>
#
# Cause the PHP interpreter to handle files with a .php extension.
#
#AddHandler php5-script .php
#AddType text/html .php
#
# Add index.php to the list of files that will be served as directory
# indexes.
#
DirectoryIndex index.php
#
# Uncomment the following line to allow PHP to pretty-print .phps
# files as PHP source code:
#
#AddType application/x-httpd-php-source .phps
ファイルを保存し、Apacheを再起動します。
service httpd restart
私は同じ問題を抱えています...問題はiptablesにあります。 (そのように思われる)
で試してください:
service iptables stop
## check if it stop...
service iptables status
その後、ページを再度リロードしてください。
他のソリューションがある場合は共有してください。
[edit] iptablesサービスの再起動は機能しています。
試してください:
service iptables restart
Phpファイルに直接移動していますか?または、単にディレクトリルートに移動しますか?
後者の場合、Apacheは.phpをディレクトリインデックスとして認識していない可能性があります。
テストするには、次の行を含むWebルートに.htaccessファイルを作成してみてください。
DirectoryIndex index.php
まず、ファイルの許可を確認する必要があります。読み取り許可をパブリックに許可しない場合、Apacheはエラーを表示せずに空白のページを生成します。
古いスレッドを再投稿して申し訳ありません...これは重要です。
また、HTML応答が出力されないこれらの問題がありました
Php.iniまたはApacheのconfファイルを再確認しても出力が表示されない場合は、クラスのinclude/requireのエラーを抑制していることがわかりました。@
は、コンストラクター関数。インクルードファイルに構文エラーがあり、エラーがスローされるとすべての出力が完全に停止しました。
したがって、最初にハンドラーを確認してください。最初にすべての出力をvarsに保存し、失敗するさまざまなスクリプトを最初に含める場合、それらのエラーを確認する必要があります。ファイルハンドラーのエラーを抑制した場合、ファイルに構文エラーがあると空白の画面が表示されます。
Phpコードで@
のすべてのインスタンスのファイルを検索します。次に、@include "/path_to/script.php";
をinclude "/path_to/script.php";
または@$foo
に$foo
に変換します。このようなvarは、httpdエラーログまたはhttp応答。
すべてがデフォルト状態に見えるので、確認のためにこの部分をチェックしましたか
cat /etc/php.ini | grep log_errors
Log_errorsが無効になっている場合は、有効にし、httpdを再起動した後にログの下でこれを確認します。 /var/log/httpd/error_log
-また、PHP構成からこの部分を確認します。cat /etc/php.ini | grep error_reporting
Display_errorsが機能するように、この値はデフォルトで有効にする必要があります。error_reporting = E_ALL