Edited at

ApacheでPHPのソースが表示される場合の対処

More than 1 year has passed since last update.


[目的]

ApacheでPHPファイルを配置した際に、PHPが実行されずにソースが表示された場合の対処をする


こちら で構築した環境で、PHPファイルを配置した場合、PHPのソースがそのまま表示されてしまいます。


PHPファイルとして配置してもブラウザでソースのまま表示される

<?php

echo phpinfo();
?>

PHPのソースが表示される要因として、ApacheにPHPモジュールが追加されていないことが考えられる。

/etc/httpd/conf/httpd.conf にモジュールを追加しようとすると、libphp5.so が存在しないため、エラーになる。


/etc/httpd/conf/httpd.confに追記

LoadModule php5_module modules/libphp5.so



Apache再起動するとエラーになる

service httpd restart


Redirecting to /bin/systemctl restart  httpd.service

==== AUTHENTICATING FOR org.freedesktop.systemd1.manage-units ===
Authentication is required to manage system services or units.
Authenticating as: user
Password:
==== AUTHENTICATION COMPLETE ===
Job for httpd.service failed because the control process exited with error code. See "systemctl status httpd.service" and "journalctl -xe" for details.

これは、libphp5.so が /etc/httpd/modules/ 配下に存在しないのが原因である。

そのため、libphp5.so を追加する。


yumでphpをインストール

sudo yum install php


読み込んだプラグイン:fastestmirror, remove-with-leaves, show-leaves

Loading mirror speeds from cached hostfile
* base: ftp.iij.ad.jp
* epel: ftp.kddilabs.jp
* extras: ftp.iij.ad.jp
* updates: ftp.iij.ad.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php.x86_64 0:5.4.16-36.el7_1 を インストール
--> 依存性解決を終了しました。

依存性を解決しました

================================================================================
Package アーキテクチャー バージョン リポジトリー 容量
================================================================================
インストール中:
php x86_64 5.4.16-36.el7_1 base 1.4 M

トランザクションの要約
================================================================================
インストール 1 パッケージ

総ダウンロード容量: 1.4 M
インストール容量: 4.4 M
Is this ok [y/d/N]: y
Downloading packages:
php-5.4.16-36.el7_1.x86_64.rpm | 1.4 MB 00:00
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
インストール中 : php-5.4.16-36.el7_1.x86_64 1/1
検証中 : php-5.4.16-36.el7_1.x86_64 1/1

インストール:
php.x86_64 0:5.4.16-36.el7_1

完了しました!
New leaves:
php.x86_64

これで、libphp5.so が配置される。

ls /etc/httpd/modules/libphp5.so 

/etc/httpd/modules/libphp5.so


Apache再起動で反映

service httpd restart