Apache 2.2.15を搭載したrhel 6.2でphp 5.3.3を実行していて、Apacheによって解釈されるPHPコードを取得できません。
エラーはありません(システムログ、httpd/error_log、またはphp_errors.log)-php.iniでエラー報告を有効にしました:
error_reporting = E_ALL & ~E_DEPRECATED
display_errors = On
log_errors = On
error_log = /var/log/php_errors.log
しかし、次のコードを含むindex.phpをブラウザー(myserver.com/index.phpなど)から直接表示すると、白い画面しか表示されません。
<?php echo 'Hello php World'; ?>
コマンドラインでphpによって実行されると、ターミナル( "Hello php World
")。
次のように、HTMLをindex.phpに追加します。
<html>
<p>Hello from within html</p>
<?php echo 'Hello php World'; ?>
</html>
ブラウザで表示すると、「Hello from within html
。 "ただし、コマンドラインから実行すると、次のようになります。
<html>
<p>Hello from within html</p>
Hello php World</html>
したがって、PHPは、ApacheではなくCLIを介して解析および解釈されます。
Index.phpとその親ファイル構造がApache:apacheによって所有されており、Apacheモジュールのselinuxコンテキストがあることを確認しました。
chcon -t httpd_sys_script_exec_t /usr/lib/httpd/modules/*
chcon -t httpd_sys_script_exec_t /usr/lib/php/modules/*
解析する.phpファイル:
chcon -R -h -t httpd_sys_content_t /export1
は正しい。権限エラーが発生せず、selinuxを一時的に無効にしたため、selinuxが問題だとは思わないecho 0 >/selinux/enforce
Apacheによって解釈されるphpの結果としての成功はありません。
Phpモジュールはその設定で読み込まれ、.php拡張子はhttpd.confで設定されていると理解されています:
LoadModule php5_module /usr/lib/httpd/modules/libphp5.so
AddType application/x-httpd-php .php .phtml
PHPIniDir /etc/
そして、Apacheはindex.phpを探すことを知っています:
DirectoryIndex index.html index.html.var index.php
httpd.confで設定されているとおり。
私は私の問題がどこにあるかについての考えを使い果たしました-PHP-でも再インストールしてみました-そして確かにどんな考えにも感謝します。それが役に立つ場合、ここに/ var/log/httpd /の内容がありますApacheを起動したときのerror_log:
[Fri Feb 03 13:44:53 2012] [notice] SELinux policy enabled; httpd running as context unconfined_u:system_r:httpd_t:s0
[Fri Feb 03 13:44:53 2012] [notice] suEXEC mechanism enabled (wrapper: /usr/sbin/suexec)
[Fri Feb 03 13:44:53 2012] [warn] module php5_module is already loaded, skipping
[Fri Feb 03 13:44:53 2012] [notice] Digest: generating secret for digest authentication ...
[Fri Feb 03 13:44:53 2012] [notice] Digest: done
[Fri Feb 03 13:44:54 2012] [warn] mod_wsgi: Compiled for Python/2.6.2.
[Fri Feb 03 13:44:54 2012] [warn] mod_wsgi: Runtime using Python/2.6.6.
[Fri Feb 03 13:44:54 2012] [notice] Apache/2.2.15 (Unix) DAV/2 PHP/5.3.3 mod_ssl/2.2.15 OpenSSL/1.0.0-fips mod_wsgi/3.2 Python/2.6.6 mod_Perl/2.0.4 Perl/v5.10.1 configured -- resuming normal operations
助けてください!
php5_module
はすでに自分でロードされており、後でデフォルトのrhel6
構成によってロードされたか、rhel6
の構成がモジュールphp5_module
をロードしています...入力している構成がデフォルトのrhel6
構成によって上書きされていることを除いて、問題はありません。
Danのサイト からステップ11を見てください。これは、過去に忘れてしまい、簡単なリマインダーが必要なときはいつでもうまくいきました。
# Make sure there's only **1** line for each of these 2 directives:
# Use for PHP 4.x:
#LoadModule php4_module modules/libphp4.so
#AddHandler php-script .php
# Use for PHP 5.x:
LoadModule php5_module modules/libphp5.so
AddHandler php5-script .php
# Add index.php to your DirectoryIndex line:
DirectoryIndex index.html index.php
AddType text/html .php
# PHP Syntax Coloring
# (optional but useful for reading PHP source for debugging):
AddType application/x-httpd-php-source phps
私にとって、問題はmodがApache2で有効になっていないことでした。
Debianのクリーンインストール、Apache2およびphp7
デフォルトで有効になっているmpm_event modを最初に無効にする必要がありましたが、その理由はわかりません。ちなみに、mpmはPHPを使用するための非常にクリーンな方法です。Apache2modの代わりにそれを検討する必要があります;)しかし、すばやく作業するには:
# a2dismod mpm_event
# a2enmod php7.0
# systemctl restart Apache2
トリックをした:)
楽しい
同様の問題があり、short_open_tag = On
に/etc/php.ini
を設定することで最終的に修正しました。アップグレード時にはデフォルトの設定ファイルに注意してください!
私の目には明らかなことを述べたが、サンプルファイルへのアクセス方法を述べたことは一度もない。 index.php
に直接アクセスしていますか(つまり http://example.com/folder/index.php )?
そうでない場合は、index.html
がある場合、ディレクトリインデックスの順序が原因で代わりに呼び出されることに注意してください。
DirectoryIndex index.html index.html.var index.php
最後に、これはここではなくserverfault.comで確認する必要があります。