先日、FuelPHP1.7.2のcontrollerに配置したPHPファイルが表示されない3つの原因という記事を書きました。やはり何回やっても自力では解決ができません。知り合いのかたに依頼し、サーバーの中を調査してもらいました。
PHPファイルが表示されない3つの原因と対策
PHPファイルが表示されない原因となる箇所は、前回のブログでだいたいめぼしはつけていました。つぎの3つです。
- httpd.confファイル
- .htaccessファイル
- FuelPHPのconfig.php
1.httpd.confファイル
もともと”Redirect 404″となっていたところを、”#Redirect 404“としてリダイレクトを無効化して保存します。保存したあとにシステムを再起動します。
# /etc/httpd/conf/httpd.conf <If "-n %{PATH_INFO}"> #Redirect 404 / </If> # systemctl start httpd.service
2 .htaccessファイル
http://…../プロジェクト名/public というURLを、http://…../プロジェクト名 で見られるようにするための設定をします。
デフォルトで存在するファイル、プロジェクト名/public/.htaccessをコピーして、プロジェクト直下にペースト(プロジェクト名/.htaccess)します。そのペーストした.htaccessファイルの最後に次の2行を加えます。
#vi /var/www/html/プロジェクト名/.htaccess RewriteBase /プロジェクト名/public RewriteRule ^(/)?$ index.php/$1 [L]
config.phpファイル
ここでいうconfig.phpとは、/var/www/html/プロジェクト名/fuel/app/config/config.phpのことです。その設定を変更すると、publicというパスなしでアクセスできるようになります。これを設定することにより、FuelPHPのcssファイルが正しく読み込めるようになります。
// 'base_url' => null, 'base_url' => '/プロジェクト名/public/',
違うサーバーになると表示されない
調査後、同じサーバーで違う、FuelPHPのプロジェクトを立ち上げてみました。やはり今回紹介した3つの設定変更を行うと、controllerに配置したPHPファイルが表示されるようになります。
ただし、調査を依頼した別のサーバーでプロジェクトを立ち上げ、3つの設定変更を行うと、今度は表示されません。おそらくApache側の設定について何か差異があるのかもしれません。
追記(2015/6/23)
後日、詳しい方にお願いをして、「違うサーバーになると表示されない」原因を調べてもらいました。.htaccessを読み込む設定になっていないことが、原因でした。Apacheの設定ファイルを変更します。
# vi /etc/httpd/conf/httpd.conf <Directory "/var/www/html"> #AllowOverride None AllowOverride All </Directory> # systemctl restart httpd.service
デフォルトでAllowOverrideは、”None”になっていたところを、”All“に変更しています。その方のお話を聞いていると、AllowOverrideの状態は、CentOSのバージョンやサーバー会社のクラウドサーバー、VPSによって異なるようです。
〔参考サイト〕