1. TOPTOP
  2. Webサービス
  3. FuelPHP

FuelPHP1.7.2のcontrollerに配置したPHPファイルを表示させるための3つの対策

|

web_dev

先日、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によって異なるようです。

〔参考サイト〕