CPIでWordPressのパーマリンクを変更後、403や500になった一連の対処法

はい、ごめんください。コスギスの小杉です。

WordPress が大好きです。WooCommerce の案件をいただいたものの、日本語情報が少なくて四苦八苦していますが、やりたいことをサクサク実現できるのでハマりそうです。

さて、今日の本題は WooCommerce ではなく、KDDI の共用レンタルサーバー「CPI」の、「シェアードプラン ACE01」で WordPress を公開時につまづきまくった際の対処メモです。

CPI のクセにつまづく方は少なくないらしく、検索したら色々と出てきたのですが、私の場合は一難去ってまた一難(ぶっちゃけありえない♪)という状態だったので、似たような状況の方の参考になれば幸いです。

前提:WordPress の構築はソフトライブラリから

「ウェブコントロールパネル」から、テストサイトに WordPress をインストールしました。

ホーム > テストサイト用設定 > ソフトライブラリ > CMSインストーラー > WordPress

と進んでいけばインストール画面になります。

個人的にはドキュメントルートにインストールすることは少ないため、サブディレクトリ(例:wordpress)を作って、WordPress をサクッとインストール。

ここは特につまづいた記憶はありませんが、サブディレクトリに作られた設定ファイルの対処に追われるとは、この時は知る由もありませんでした・・・

なお、公開前なので Basic 認証をかけましたが、管理画面を使わず、.htpasswd ファイルを別途作って対応しています。

さあ公開!

テストサイトの構築があらかた問題ないと判断したため、公開することにしました。CPIにはスマートリリースがあって便利ですよね。

ということで、ユーザーポータルの SmartRelease から、テスト環境をリリース!・・・しばらく待っていると、公開環境に上書き移行されます。

この時はまだテスト環境のURLの設定は入ったままで、HOME_URL もテスト環境のサブディレクトリのままでした。

公開サイトのサブディレクトリではテスト環境と同様に動いて、管理画面も問題なくアクセスできます。

そう、ここでパーマリンクを変更する前までは、何の問題もなかったのです。

パーマリンクを変更したら 403 Forbidden
→ アホな見落としに気づいてすぐ解決

設定を変えれば、真っ白になるかエラーになるかは覚悟していたので、パーマリンクを変更したら、慌てず騒がず index.php と .htaccess をルートディレクトリにコピーして、設定を書き換えます。

公式でもアナウンスされている、この手順です。

参考:WordPress を専用ディレクトリに配置する – WordPress Codex 日本語版

が、無情にも表示される 403 Forbiddon 。

おかしいな?と首を傾げてグーグル先生に尋ねると、

CPIで403エラーになる時は、.htaccess に次の1行を入れると解決するよ!

Options +SymLinksIfOwnerMatch

入ってる!すでに入ってるよ!!

ソフトライブラリからインストールした WordPress の場合、.htaccess の # BEGIN WordPress の前には、以下のような設定がすでに入っています。そりゃそうです、テストサイトではちゃんと動いているのですから。

AddHandler x-httpd-php5619 .php
suPHP_ConfigPath /home/ユーザID/html/wordpress/
<FilesMatch "^(\.htaccess|\.htpasswd|php\.ini|.*\.sql|.*\.log|.*\.cron|.*\.inc|.*\.phps|.*\.yml)$">
Deny from all
</FilesMatch>
Options +SymLinksIfOwnerMatch

しかしエラーは

Options FollowSymLinks or SymLinksIfOwnerMatch is off which implies that RewriteRule directive is forbidden: 〜〜

が出てまったく変わらず。

おかしいな・・・と思って何度も .htaccess を書き換えても変わらないので、一度FTPを閉じてつなぎ直そうとして、テスト環境で一生懸命 .htaccess を変更していることに気づきました。

本番環境につなぎ直して、index.php や .htaccess の設定を変更したら、403エラーはなくなりました・・・orz

しかし 500 Internal Server Error があらわれた!

403エラーがなくなったと思ったら、500エラー。一番会いたくないやつですが、PHPに異常がないとわかっているので、原因は .htaccess にあります。

CPI のソフトライブラリで WordPress をインストールした際、WordPress 関連以外のファイルとして、php.ini と cpi_cms_settings.yml が作られます。

php.ini は、ユーザーがドキュメントルートで設定を変えられるように作られたものなので、特に変更する必要がなければ使いません。

cpi_cms_settings.yml は CPI がソフトライブラリのインストール状況でも管理しているのだろうと判断したので、WordPress のインストールディレクトリに置いたままにしておきました。

原因があるとしたらこの2つの関連だろうと当たりをつけ、.htaccess の

suPHP_ConfigPath /home/ユーザID/html/wordpress/

を削除(コメントアウトでもOK)したことで、500エラーから解放されました!ただ、php.ini が必要になった場合は、php.ini の置き場にパスを変更して使うようにしないとですね。

しかしデータベースにつながらない!

表示できるようになったと喜んだのもつかの間、管理画面にログインしようと思ったら、「データベース接続エラー」の非常な文字。もう白い画面見飽きたよ・・・

WordPress の管理画面、/wp-admin/ にアクセスしたところ、データベース選択不可と言われます。ユーザー名とパスワードには問題なく、データベースを選択できないそうです。

データベース選択不可

本当に存在しているよ!

使用できる権限もあるよ!!

データベースの接頭辞に問題ないよ!!!

グーグル先生に聞いても、ケアレスミスの答えしか見つからないので phpMyAdmin でデータベースの登録内容を色々と探してみたのですが、これといった設定はなく。

半ばあきらめかけていたところに、「127.0.0.1:3307」という表示。

ポート・・・あなたなの・・・?

PHPの最新バージョンとして(テスト環境の時から)5.6を使っていたので気にしていなかったのですが、wp-config.php のホスト名を「127.0.0.1」(デフォルトのホスト)から「127.0.0.1:3307(ポート番号を追加)」に変えたところ解決!!

 

わかってしまえばスムーズに行くことばかりなのですが、次回と備忘録も兼ねてのメモでした。テンションがおかしいのは自分の不甲斐なさが笑うしかないのと、久しぶりにブログを書いたせいです。

たまには書かないとですね。

1978年、新潟県南魚沼市生まれ、長岡市在住。夫と子ども2人をこよなく愛す。

教員養成課程を修了して教員免許を取得するも、民間企業に就職して12年近くウェブ制作に関わる。デザインから開発まで、制作業務をトータルでこなすオールラウンダー。

2013年4月には新潟県で初のウェブ解析士マスターになり、同年6月に起業、コスギスとして活動。心理学に基づいたコンテンツ分析と、SNSなども含めた幅広いウェブマーケティング、そしてWordPressでのサイト構築を得意とする。

ウェブ活用の人材を育てる「ウェブ解析士認定講座」や関連セミナーを新潟県内で唯一定期開催。WACAアワードにて 2016年 Best of Best を受賞。2017年 ペライチ公式 新潟県代表サポーター。

初心者向けのWordPressの勉強会(WordBench新潟・長岡藩)や、ホームページ勉強会を主催。セミナー講師としても活動中。