年間100円につられて契約したドメインキング。自分にとってサイト構築にはPEARが不可欠。まずはそれを解決せねばなるまい。まず、その結果だけどちょっと手間は必要だけど、問題なく動作はできた。以下、その手順。
以前、XREAでやったのがこれ。
XREAでPEARを使う: point of view point
この方法でCORESERVERも問題なくやってきた。では、ドメインキングではどうか?
ドメインキングでは、外部からアクセスできるところ以外にはファイルが設置できないようだ(FTPでアップロードできない)。プログラムからアクセスできるphpコードは、外からもアクセスできる場所におかなくてはならない模様。でもって、複数のサブドメインをドメインキングで運用しようとした場合、1つのスクリプトを複数のサブドメインでは共用できないっていう感じ。
サーバー上のパスは、登録したドメインとサブドメインがexample.com、sub1だとすると、
/var/www/vhosts/example.com/subdomains/sub1/httpdocs/
となる。PHPでPEARのパスを指定する場合には、上記ディレクトリ以下に設置した上で行う。FTPクライアントから見えるパスは
/subdomains/sub1/httpdocs
といった具合になる。sub1の部分がサブドメインのホストに当たる部分(この表現、自信なし)。sub1.example.comっていう感じで外部からアクセスすることになる。
PEARのファイルは、ローカルPC上のXAMPPからコピーする。更新などもローカルPCで行い、更新結果をドメインキングのサーバーにアップロードする。このほうが考えることが少なくて済む。たぶん。PEARのライブラリは、FTPクライアントで以下のディレクトリを作って、そこにコピー。
/subdomains/sub1/httpdocs/pear/
今回は必要なもののみ。CORESERVERとかだと1度コピーしてしまえば、複数のサブドメインから共用できるのだけど、ドメインキングではそれが不可能っぽい(別のサブドメイン用のディレクトリを指定するとファイルがないって言われる)ので、サブドメインごとにコピーすることになる。複数の場所に同じファイルが配置されることになることを考えると、PEAR以下全部をコピーするには容量がもったいない(今回は5GBの契約なのだ)のと、メンテナンス的にも不安があったので。把握しやすいようにという配慮から。PagerとかCacheとか、ディレクトリごとコピー。これなら最小限。たぶん。
で、コピーしたPEARライブラリを、自分のプログラムから参照する場合にはいくつかの方法がある。CORESERVERでやっていたのはこんな感じ。
ini_set(‘include_path’, ‘PEARを配置した絶対ディレクトリ’ . PATH_SEPARATOR . ini_get(‘include_path’));
なんかあった場合にまたCORESERVERに戻すことも考えて、CORESERVER用の記述とドメインキング用の記述両方を書いておこうと思ったのだ。これだとドメインキングで運用時、CORESERVER用に記述されたパスも見に行くことになるけど、そのロスはさほどでもなく、そして、動作に問題はない。
とはいえ、存在しないパスをサーチしてしまうのもなんか気分的にいやだし、保守する際のことを考えてもちょっと気分的に問題あり。スクリプトごとにこれを記述するのか? とかいう点から。
ということで、.htaccessに書く方法をとることに。
php_value include_path “.:/var/www/vhosts/example.com/subdomains/sub1/httpdocs/pear”
ドキュメントルートに配置した.htaccessにこれを追加する。これだけでOK。元からあるスクリプトはそのままでいける。ナイス。参考にしたのはこれ。【 ほでなすPHP 】 PHPのインストール -> 「.htaccess」ファイルでの設定.htaccess で error_reporting を設定するときの注意点 | Sun Limited Mt.
とりあえず、ここまでやれば、従来通りの方法でコンテンツの作成・更新ができるはず。
残った問題といえば、PHPのバージョンが5.1系という、WordPressから見放されたバージョンのままであるということだ。さて。WordPressはこのサーバーで使わないからいいか、とか思ってたんだけど、やっぱり使いたくなってしまったんだよなあ。うーむ。ドメインキングのレンタルサーバー契約、サブドメインの引越しで悩む話の続きでした。
コメント
不躾ではございますがこの記事に関して質問させていただきたくコメントいたしました。
以前からWordpressのプラグイン「CS SHOP」というのを用いて商品等の表示を行っておりました。
サーバーはドメインキングを使用しており、Wordpressのバージョンは4.9です。
PHPのバージョン5.6の頃には正常に動作していたものの、7.0にアップデートしたところ動作しない(このプラグインを使って表示している場所以降が表示されない)ようになってしまいました。
デバッグモードにしてエラー内容を確認したところ
Notice: Undefined index: args in /var/www/vhosts/example.com/httpdocs/wp-includes/functions.php on line 5149
Warning: require_once(): open_basedir restriction in effect. File(/usr/local/php70/share/pear/Cache/Lite.php) is not within the allowed path(s): (/var/www/vhosts/example.com/:/tmp/) in /var/www/vhosts/example.com/httpdocs/wp-content/plugins/cs-shop/service-base.php on line 16
Notice: Undefined index: args in /var/www/vhosts/example.com/httpdocs/wp-includes/functions.php on line 5149
Warning: require_once(/usr/local/php70/share/pear/Cache/Lite.php): failed to open stream: Operation not permitted in /var/www/vhosts/example.com/httpdocs/wp-content/plugins/cs-shop/service-base.php on line 16
Fatal error: require_once(): Failed opening required ‘Cache/Lite.php’ (include_path=’.:/usr/local/php70/share/pear’) in /var/www/vhosts/example.com/httpdocs/wp-content/plugins/cs-shop/service-base.php on line 16
恐らくこちらの記事で取り上げられているPEARに関する問題だとは思われますが、PHPやサーバーの知識に乏しいため改善できずにおります。
つきましては、お分かりになる範囲で結構ですので解消方法等ご存知でしたらお教えいただきたく思います。
突然のコメント、しかも不躾な質問で申し訳ありませんがよろしくお願いいたします。
しばらくチェックしておらず、返事が遅れました。残念ですが、すでにドメインキングを使っていないのでわかりません。
と、書こうとしたところ、すでに解決したようで。
あと、書き込みいただいたエラーメッセージなどに個人情報につながりそうな部分がありましたので、変換しておきました。