Mar
30
2010
0

php5ダウングレード

5:45 am

先日、サーバーにインストールしていたphp-5.2.10のバグでWordPressの日付表示が0000年となったり、WP-phpMyAdminにログインできなかったりした問題に対処するため、現時点の最新バージョンのphp-5.3.2にアップグレードしましたが、日付表示は直り、WP-phpMyAdminにログインもできるようになったのですが、WP-phpMyAdminで新たなエラーが発生してしまいました。まだ、WP-phpMyAdminがphpの最新バージョンに対応していないためと思われます。
 よって、phpを5.2.10にバグのパッチを当てたうえで戻してみようと思います。

まず、index of /php5から、php-5.2.10をダウンロードして展開します。
$ cd /usr/local/lib
$ sudo wget http://museum.php.net/php5/php-5.2.10.tar.gz
$ sudo tar zxvf php-5.2.10.tar.gz

$ sudo nano /usr/local/lib/php-5.3.2/php_date.c

以下を参考に、case ‘y’: ・・・となっている行を削除(または、コメントアウト)して、変わりに
case ‘Y’: length = slprintf(buffer, 32, “%d”, (int) t->y); break;
を挿入すれば良いだけです。

I put a patch in the ‘Reproduce code’ section that ‘fixes’ it..

Reproduce code:
—————
— php-5.2.10/ext/date/php_date.c 2009-07-27 17:55:06.192343000 -0400
+++ php-5.2.10.1/ext/date/php_date.c 2009-07-27 16:44:23.297327000 -0400
@@ -798,7 +798,8 @@
/* year */
case ‘L’: length = slprintf(buffer, 32, “%d”, timelib_is_leap((int) t->y)); break;
case ‘y’: length = slprintf(buffer, 32, “%02d”, (int) t->y % 100); break;
- case ‘Y’: length = slprintf(buffer, 32, “%s%04ld”, t->y < 0 ? "-" : "", llabs(t->y)); break;
+ /* case ‘Y’: length = slprintf(buffer, 32, “%s%04ld”, t->y < 0 ? "-" : "", llabs(t->y)); break; */
+ case ‘Y’: length = slprintf(buffer, 32, “%d”, (int) t->y); break;

ここから先の手順は、php-5.3.2をインストールしたときのものと基本的には同じです。

$ cd ./php-5.3.2

./configure --prefix=/usr/local/lib/php-5.2.10 --with-apxs2=/usr/bin/apxs2 --enable-pcntl --enable-mbstring --enable-mbregex --enable-zend-multibyte --with-mysql --with-mysqli --with-mcrypt --with-gd --with-openssl --with-zlib --with-pgsql --with-pear=/usr/local/lib/php-5.2.10

$ sudo su
# make
# maketest
testの結果は、以下のとおり特に問題はなかったようです。
Thank you for helping to make PHP better.

# make install
すると、以下のようにエラーになります。

Installing PHP SAPI module:       apache2handler
/usr/share/apache2/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1.0/build/libtool' libphp5.la /usr/lib/apache2/modules
/usr/share/apr-1.0/build/libtool --mode=install cp libphp5.la /usr/lib/apache2/modules/
libtool: install: cp .libs/libphp5.so /usr/lib/apache2/modules/libphp5.so
libtool: install: cp .libs/libphp5.lai /usr/lib/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /usr/local/lib/php-5.2.10/libs'
chmod 644 /usr/lib/apache2/modules/libphp5.so
[activating module `php5' in /etc/apache2/httpd.conf]
Installing PHP CLI binary:        /usr/local/lib/php-5.2.10/bin/
Installing PHP CLI man page:      /usr/local/lib/php-5.2.10/man/man1/
Installing build environment:     /usr/local/lib/php-5.2.10/lib/php/build/
Installing header files:          /usr/local/lib/php-5.2.10/include/php/
Installing helper programs:       /usr/local/lib/php-5.2.10/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/lib/php-5.2.10/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/lib/php-5.2.10/
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1391
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1396
Warning: Cannot use a scalar value as an array in phar://install-pear-nozlib.phar/PEAR/ChannelFile.php on line 1400
[PEAR] Archive_Tar    - installed: 1.3.3
[PEAR] Console_Getopt - installed: 1.2.3
[PEAR] Structures_Graph- installed: 1.0.2
[PEAR] XML_Util       - installed: 1.2.1
[PEAR] PEAR           - installed: 1.8.0
Wrote PEAR system config file at: /usr/local/lib/php-5.2.10/etc/pear.conf
You may want to add: /usr/local/lib/php-5.2.10 to your php.ini include_path
Installing PDO headers:          /usr/local/lib/php-5.2.10/include/php/ext/pdo/

以下のようにhttpd.confを編集し、保存します。
# nano /etc/apache2/httpd.conf

#dummy
LoadModule hoge hoge.so

再度 # make install を実行
結果、Warningは消えました。

root@UbuntuServer:/usr/local/lib/php-5.2.10# make install
Installing PHP SAPI module:       apache2handler
/usr/share/apache2/build/instdso.sh SH_LIBTOOL='/usr/share/apr-1.0/build/libtool' libphp5.la /usr/lib/apache2/modules
/usr/share/apr-1.0/build/libtool --mode=install cp libphp5.la /usr/lib/apache2/modules/
libtool: install: cp .libs/libphp5.so /usr/lib/apache2/modules/libphp5.so
libtool: install: cp .libs/libphp5.lai /usr/lib/apache2/modules/libphp5.la
libtool: install: warning: remember to run `libtool --finish /usr/local/lib/php-5.2.10/libs'
chmod 644 /usr/lib/apache2/modules/libphp5.so
[activating module `php5' in /etc/apache2/httpd.conf]
Installing PHP CLI binary:        /usr/local/lib/php-5.2.10/bin/
Installing PHP CLI man page:      /usr/local/lib/php-5.2.10/man/man1/
Installing build environment:     /usr/local/lib/php-5.2.10/lib/php/build/
Installing header files:          /usr/local/lib/php-5.2.10/include/php/
Installing helper programs:       /usr/local/lib/php-5.2.10/bin/
  program: phpize
  program: php-config
Installing man pages:             /usr/local/lib/php-5.2.10/man/man1/
  page: phpize.1
  page: php-config.1
Installing PEAR environment:      /usr/local/lib/php-5.2.10/
[PEAR] Archive_Tar    - already installed: 1.3.3
[PEAR] Console_Getopt - already installed: 1.2.3
[PEAR] Structures_Graph- already installed: 1.0.2
[PEAR] XML_Util       - already installed: 1.2.1
[PEAR] PEAR           - already installed: 1.8.0
Wrote PEAR system config file at: /usr/local/lib/php-5.2.10/etc/pear.conf
You may want to add: /usr/local/lib/php-5.2.10 to your php.ini include_path
Installing PDO headers:          /usr/local/lib/php-5.2.10/include/php/ext/pdo/

相変わらずPEARのconfigを直せとか言われてますが、後でやることにしてとりあえず放置。

次に、
# nano /etc/apache2/httpd.conf 
で以下のように、全行をコメントアウトし、保存します。

#dummy
#LoadModule hoge hoge.so
#LoadModule php5_module        /usr/lib/apache2/modules/libphp5.so

apache2を再起動します。
# /etc/init.d/apache2 restart

phpinfo()で確認します。
5.2.10に戻りました。

WordPressでWP-phpMyAdminもちゃんとログインできました。

Mar
21
2010
0

WordPressの移植

14:15 pm

レンタルサーバーXServerに構築したWordPressサイトwww.hbirds.netのデータを自宅サーバーUbuntuServer9.10に構築したhubuntu.netへ移植した手順です。
両サーバーともPhpMyAdminが使えることが前提です。

移植前後の環境を整合させる
これが一致してないと移植できない場合があります。
移植先のhubuntu.netの環境を移植元のhbirds.netのものに整合させます。
○WordPressのバージョンを整合させる
 バージョンによってはMySQLのデータベース構造が異なる場合があります。
○MySQLの文字コード等を整合させる
 文字コードと照合順序を一致させます。
○WordPressの各種設定等を整合させる
 上から3つ目までは、管理画面で設定します。
 下の二つは、環境によっては必須ではないかもしれませんが、挙動も含めて完全に移植しようとすれば、移植前のプラグインやテーマも含めて移植しないといけません。
 ・パーマリンク設定を整合させる
 ・日付、時刻のフォーマットを整合させる
 ・ブログのアドレス(URL)の形式を整合させる
 ・プラグイン移植する
  hbirds.netのプラグインフォルダを丸ごとhubuntu.netにコピーします。
 ・テーマを移植させる
  hbirds.netのテーマフォルダを丸ごとhubuntu.netにコピーします。
 ・アップロードファイルを移植する
  hbirds.netのアップロードファイルフォルダを丸ごとhubuntu.netにコピーします。

XServerのPhpMyAdminにアクセスして、対象となるデータベースを選択し、すべてのテーブルにチェックを入れてエクスポートをクリックします。

「ファイルに保存する」にチェックを入れて、「実行する」をクリックします。

「ファイルを保存する」を選択し、OKボタンをクリックします。

ダウンロードできました。

任意のテキストエディタで保存したファイルを読み込んで、右のようにファイル中の文字列を移植先に合わせ一括して置き換えます。
他にも、
hbirds.net→hubuntu.net
www.hbirds.net→hubuntu.net
などを置き換えます。

移植先のデータベースを選択し、すべてのテーブルにチェックを入れて、メニューから「削除」を選択し「実行する」をクリックします。

「本当に実行しますか」と聞かれますが、「はい」をクリックします。

正常に実行されたのを確認し、インポートボタンをクリックします。

先ほど、文字列を置き換えたファイルを参照し、「実行する」をクリックします。

「インポートは正常終了しました」と表示されます。

http://hubuntu.net/wordpress/wp-login.php でアクセスします。
ちゃんと移植できました。

Mar
10
2010
0

PhpMyAdmin

5:44 am

phpmyadmin
このサイトどおりに設定したが、ログイン画面で正しいユーザー名とパスワードを入力しても、ログイン画面にリダイレクトされて戻ってしまい先に進めない状況。
認証に失敗していると思われます。
このサイトを参考に次のコマンドにより、/var/www/phpmyadmin にシンボリックリンクを張ってみました。

$ sudo ln -s /usr/share/phpmyadmin /var/www/phpmyadmin

パーミッションの問題である可能性があるので、

$ sudo chmod 755 /var/www/phpmyadmin/config.inc.php
$ sudo chown -R www-data:www-data /var/www/phpmyadmin

まだ、うまくいきません。

やり直してみました。

$ cd /var/www
$ sudo wget http://prdownloads.sourceforge.net/phpmyadmin/phpMyAdmin-3.2.5-all-languages.tar.gz
$ sudo tar -xvzf phpMyAdmin-3.2.5-all-languages.tar.gz
$ sudo mv phpMyAdmin-3.2.5-all-languages phpmyadmin
$ sudo apt-get install libstring-mkpasswd-perl
$ mkpasswd.pl -l 46
$ cd ./phpmyadmin
$ sudo cp config.sample.inc.php config.inc.php

$ sudo nano /var/www/phpmyadmin/config.inc.php により、config.inc.php を編集

$cfg['blowfish_secret'] = '****************'; /* YOU MUST FILL IN THIS FOR COOKIE AUTH! */←mkpasswd.pl -l 46をコピー&ペースト
$cfg['Servers'][$i]['auth_type'] = 'HTTP';←'cookie'から変更

*クッキー認証がうまく行かないため、http認証にしました。
phpmyadminの認証方式については、このサイトが詳しいです。

ウェブブラウザから http://サーバーのIPアドレス/phpmyadmin/ としてアクセスすると、
右のようなログイン画面が現れます。


ユーザー名とパスワードを入れると右のように、phpmyadminが起動します。

www.hbirds.net