ソーテック社から2012年6月に出た早川聖司さんの「FuelPHP入門」は日本で初めて出版されたFuelPHPの解説書です。労作であり、優れた書籍だと感心しています。Apacheで勉強してみましたが、Nginxのこのシリーズでは、今回はNginxに変えて試してみましたが、ひとつのことを除いて、題材のブログアプリケーションの動作は全く問題ありませんでした。
※追記 検証環境はUbuntu14.04LTS、Nginx1.6、FuelPHP1.2です。FuelPHP1.7ではレイアウトがおかしくなり、途中で断念しました(2014年9月3日午後13時)。
ひとつのこととは、FuelPHPのHtmlクラスのanchor()メソッドを使った際、NginxでURLの書き換え対策を行っているにも関わらず、リンクにindex.phpが含まれてしまうことでした。この点について、グーグル先生に聞いてみましたら、まささんのブログhttp://letsspeak.hatenablog.com/entry/2012/03/12/082458に解決法が紹介されていました。
具体的には、/fuel/app/config/config.phpの中の、
/** * index_file - The name of the main bootstrap file. * * Set this to false or remove if you using mod_rewrite. */ 'index_file' => 'index.php',
の’index.php’をfalseか行そのものを削除すれば良いらしいです。サイト管理者の場合は、行を削除しましたら、Html::anchor()にindex.phpが出なくなりました。Apacheのmod_rewrite対策に代わるものとしては、Nginxにはifディレクティブが用意されていますので、このところを引用しますと、
# for FuelPHP server { listen 80; # listen [::]:80 default_server ipv6only=on; # root /usr/share/nginx/html; root /var/www/fuelsites/blog/public; # root /var/www/fuelsites/blog; index index.php index.html index.htm; # Make site accessible from http://localhost/ server_name www.fuelphp.jp; access_log /var/log/nginx/fuel_access.log; error_log /var/log/nginx/fuel_error.log; location / { # try_files $uri $uri/ /index.php?$uri&$args; # try_files $uri /index.php?$uri&$args; if (!-e $request_filename) { rewrite ^(.+)$ /index.php?url=$1 last; break; } } #error_page 404 /404.html; # pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000 # location ~ \.php$ { fastcgi_split_path_info ^(.+\.php)(/.+)$; # NOTE: You should have "cgi.fix_pathinfo = 0;" in php.ini # With php5-cgi alone: # fastcgi_pass 127.0.0.1:9000; # With php5-fpm: fastcgi_pass unix:/var/run/php5-fpm.sock; fastcgi_index index.php; include /etc/nginx/fastcgi_params; } # deny access to .htaccess files, if Apache's document root # concurs with nginx's one # location ~ /\.ht { deny all; } }
上図で、if()ディレクティブのところが、Apacheのrewriteルールに相当するもので、ドキュメントルート以下を、その前にindex.phpを付けて書き直しなさい、という意味です。Wordpressは全く同じ設定で、permalinkの設定ができるのですが、こちらではうまくいきませんでした。そこで、Google先生にいろいろ聞いた結果、上記のまささんのサイトを見つけたというところでした。
こうしておいて、サイト管理者の入力とダウンロードファイルを併用した結果、次の画面のようになりました。まず、最初のログイン画面は、
ログインすると、投稿記事一覧画面が出て、ページネーションが下部に表示されます。
上部の新規投稿ボタンをクリックすると、下図のような新規投稿画面になります。