Jul
12
2009
0

WordPress2.8.1

8:34 am

自動アップデートで2.8からアップデートしました。
あわせて、気になっていたXreaセーフモード対策もしました。
これまでは、CGI版PHPを使って、define( ‘CONCATENATE_SCRIPTS’, false );を wp-config.php に追加して対応してましたが、CGI版PHPは遅いというハナシなので、基本的にモジュール版PHPを使用する方法に切り替えました。
WP Super Cache等のCache系プラグインもYSlowやPageSpeedでそれなりに対策したので、すべて使用停止にしてみました。

/wp-admin/.htaccessを以下のようにしました。

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>
<Files media-upload.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files theme-editor.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files themes.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files theme-install.php>
AddHandler application/x-httpd-phpcgi .php
</Files>
<Files plugins.php>
AddHandler application/x-httpd-phpcgi .php
</Files>

Xreaサーバーにおける、WordPress2.8の問題点は、以下のとおりです。

※WordPress2.8からスクリプト処理のスピードが向上しましたが、その分PHPが必要とするメモリ量が増えました。そのためxreaのCGI版PHPではメモリが足らずWordPress2.8が正常に動作しません。特に一部のブラウザでダッシュボードのレイアウトが崩れるという症状が報告されています。
 これを回避するにはインストール時に編集した
wp-config.php ファイルの適当な位置に
define( ‘CONCATENATE_SCRIPTS’, false );
という一行を追加してください。
これでCGI版PHPでもWordPress2.8が使用できます。

※※以下は上級者向けの説明です。
モジュール版PHPと組み合わせて、必要なファイルのみを指定してCGI動作させることもできます。CGI動作させたいファイルのあるディレクトリに.htaccessファイルを作成して以下のように記述します。

AddHandler application/x-httpd-phpcgi .php

この方法を用いてWordPress2.8を使用することもできます。
ただファイルを指定するやり方は、今後のWordPressのバージョンアップによって指定すべきファイルが増えたり変更される可能性があるので、特に詳しい方以外にはお勧めしません。

しかし、HeadCleaner のCSS/JSキャッシュ と JS結合のチェックを外さないとsyntaxhighlighterやjquerycssmenuなどが動かなくなる問題が発生。
また、以下のエラーが出てしまいます。

Warning: session_start() [function.session-start]: open(/tmp/sess_ts0v6g08v6ld4n0hm96ucgip33, O_RDWR) failed: Permission denied (13) in /var/www/www.hbirds.net/wordpress/wp-content/plugins/easy-contact/econtact.php on line 112

どうも上手くいかず、結局元のようにCGI版PHPを使う方法に戻しました。

Written by hbirds in: WPカスタマイズ | Tags: ,
Jun
28
2009
0

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:

www.hbirds.net