Jun
28
2009

WordPress2.8の問題点

14:31 pm

XreaサーバーでCGI版PHPを使っていると、管理画面が崩れる問題点があり、色々調べてみると、WordPressが2.8になってから、必要なPHPのメモリが64MBになったことが原因のようです。xreaのCGI版PHPのメモリは32MBなので問題を起こしていたようです。

解決策は、2通りあります。
1.wp-config.phpに以下の一行を追加してメモリ使用量を減らす
  define( ‘CONCATENATE_SCRIPTS’, false );

2.モジュール版PHPを使用する
  CGI版PHPは、必要な場合に限定する。
  具体的には、/wp-admin 直下の.htaccess を以下のようにすること。
Files で指定したphpのみCGI版PHPで動かし、他はモジュール版で動かすという訳です。

<files async-upload.php>
AddHandler application/x-httpd-phpcgi .php
</files>
<Files plugin-install.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files update.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files update-core.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files admin.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files options-general.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

両方試してみましたが、1.の方法は全く問題なし。ちなみに、自分の場合は、もともとWP Super Cache を使っていたので.htaccessを/www.hbirds.net の直下において、AddHandler application/x-httpd-phpcgi .php の一行を追加してます。

2.の方法では、/www.hbirds.net の直下の.htaccessからAddHandler application/x-httpd-phpcgi .php の一行を削除すると、使っているプラグインEazy Contactのsession_start();でエラーが出てしまいます。

XREAではphpはApacheモジュールの前提なので/tmpにSessionデータを書き込む設定になっている。つまりプロセスのオーナーがApacheで書き込みされる。
一方でCGI版だと、プロセスのオーナーが自分になる。つまり/tmpのアクセス許可が必要だ。たぶんXREAのミスだと思うが/tmpのパーミッションでCGI版のSessionはそのままでは動かない。
なので自分のsession_save_pathを変更して自分のHOME内に用意しておく
session.save.path = /virtual/XXXXXXXX/temp/session/
の様に設定が必要。

.htaccess に以下のように追加するらしい(未確認)

<IfModule mod_php5.c>
  php_value session.save_path "/virtual/username/tmp"
</IfModule>

または
php_value session.save_path ‘/virtual/username/tmp’
または
php_value session.save_path “/virtual/ユーザID/public_html/ドメイン名/tmp”

また、tmpディレクトリを作って、パーミッションを変更する必要もあるようです。

Written by hbirds in: WPカスタマイズ | Tags:

No Comments »

RSS feed for comments on this post. TrackBack URL

Leave a comment

You must be logged in to post a comment.

www.hbirds.net