2012年3月28日水曜日

第58回PHP勉強会@東京に参加した。毎回気づいた時にはいっぱいだったり時期が過ぎていたりで参加は初めてとなりました。発表者だけでなく 全員が自己紹介するのも新鮮でした。人数が30 人という比較的少人数だから出来る業かもしれませんが、心の準備をしておらずドキドキしてしまいました。 感想は別に書くとして 発表された資料を 纏めておきます。 (発表順)

PHP と MySQL でカジュアルに MapReduce する

Phakeで簡単モックオブジェクト作成

入門 PHP 5.4

2012年3月19日月曜日

基本的にPHP Fog へのインストールは 他の共用サーバと同じ様な手順で行う事が出来ます。
ドキュメントルート は ****.phpfogapp.com であり、ファイルのアップロード(デプロイ)は git を使用します。



SOY CMS2を新規インストールする手順

  1. 動作環境を満たしたサーバーを準備する※1
  2. SOY CMS2インストールファイルをダウンロードする
  3. インストールファイルをサーバーへアップロードする
  4. インストールウィザードに従ってインストールを進める

※ SOY CMS2 をインストール するより引用


1. github から SOY CMS2 を PHP Fog のアプリケーションの中にダウンロードする。


# cd ****.phpfogapp.com
# git clone git@github.com:SOYCMS2-dev/SOYCMS2.git


2.  soycms 配下のファイルを ****.phpfogapp.com に移動する

# cd SOYCMS2/soycms
# move * ../../
# cd ../../
# rm -fr SOYCMS2

3.  PHP Fog にデプロイ(アップロード)する

# git add *

# git commit -m "soycmsを展開"
# git push

4.  SOY CMS2のインストールの設定

「サーバによってはドキュメントルートより上に設置する事も可能です」とありますが、PHP Fogの場合はデフォルト(soycms_config)以外には選択肢が無さそうです。

5. 初期管理者の追加

パスワードを設定します。「メールサーバの設定」 は PHP Fog に mail() が使えるとの記述があったので取りあえずデフォルトのままとし特に編集しませんでした 。


6. 初回ログイン

先ほど設定した管理者ID とパスワードを入力します。管理画面のテーマは ベースとなる色を変更する事が出来ます。試してみると理解出来ると思います。

7. サイトの作成

8. データベース種別

mysql を選択します。「Database Connection Info」に書かれている設定情報を参考にします。

次へを押すとエラーが発生しました。直接 サーバ上にディレクトリを作る方法(権限)が無い様です。
サイトを作成するには ローカルの環境で サイトまで作って git push し、mysql をリストアするしか方法は無さそうです。
別の機会に試してみます。今日はここまでとします。



2012年3月12日月曜日

アップデートまでのいきさつ


開発からは7年ほど経過していますが、サーバ自体を去年入れ替えました。ただCentOS5の標準のPHPを使用したため PHPのバージョンは5.1.6 でした。

今まで問題はなかったのですが、Smarty3 にアップグレード した時に問題が発生しました。
具体的には escape 処理を使った時に出力した画面が真っ白になってしまいました。
Smarty3の継承機能が便利な事もあり、 escape が使用出来ない件に関しては目をつぶっていました。

ちょうど、新規開発をするタイミングもあり、原因を調査しようと考えました。
最初にescapeのソースを確認します。

smarty2

function smarty_modifier_escape($string, $esc_type = 'html', $char_set = 'ISO-8859-1')
{
    switch ($esc_type) {
        case 'html':
            return htmlspecialchars($string, ENT_QUOTES, $char_set);


smarty3

function smarty_modifier_escape($string, $esc_type = 'html', $char_set = null, $double_encode = true)
{
    if (!$char_set) {
        $char_set = Smarty::$_CHARSET;
    }

    switch ($esc_type) {
        case 'html':
            return htmlspecialchars($string, ENT_QUOTES, $char_set, $double_encode);


比較すると 関数 htmlspecialchars の double_encode が追加され 引数が異なっています。
double_encode は 5.2.3 からのサポートなのでこれが原因と考えられます。
必要条件には Smarty 3.x: PHP 5.2+ とあるのですが、5.2.3 以降を使用した方が良いかもしれません。

アップデートの手順

CentOS5での手順です。コマンドだけですが。。。

# cd /etc/yum.repos.d/
# wget http://dev.centos.org/centos/5/CentOS-Testing.repo
# yum --enablerepo=c5-testing update php
# httpd -k restart

Apacheの再起動をしないと Apacheモジュールとして動かしているPHP は 古いバージョンのままになります。

引き続き。。。

それはまた別の話。と書いていましたが、何日かして、Fatal error: Call to undefined function mcrypt_get_key_size() が発生しました。原因としては mcrypt のモジュールが存在しないという事のようです。確認してみます。

確認1. yum info php-mcrypt
Installed Packages
Name : php-mcrypt
Arch : x86_64
Version 5.1.6
を見るとインストールはされていますが Version が 5.1.6 と古い為にエラーが起きている様です。

確認2. php -v

#php -v

PHP Warning:  PHP Startup: mcrypt: Unable to initialize module  ← ここ
Module compiled with module API=20050922, debug=0, thread-safety=0
PHP    compiled with module API=20060613, debug=0, thread-safety=0
These options need to match
 in Unknown on line 0
PHP 5.2.10 (cli) (built: Nov 13 2009 11:44:05) 
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies

確認の結果 mcrypt を アップデートする事に決めした。

google ます。

wget ftp://ftp.pbone.net/mirror/rpms.famillecollet.com/fedora/9/olds/x86_64/php-mcrypt-5.2.10-1.fc9.remi.x86_64.rpm

この辺は決まり文句。


rpm -e php-mcrypt-5.1.6-15.el5.centos.1.x86_64
rpm -i --nodeps php-mcrypt-5.2.10-1.fc9.remi.x86_64.rpm

確認。

#php -v


PHP 5.2.10 (cli) (built: Nov 13 2009 11:44:05)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.2.0, Copyright (c) 1998-2009 Zend Technologies


# rpm -qa |grep php
php-5.2.10-1.el5.centos
php-devel-5.2.10-1.el5.centos
php-pear-1.4.9-6.el5
php-common-5.2.10-1.el5.centos
php-cli-5.2.10-1.el5.centos
php-gd-5.2.10-1.el5.centos
php-ldap-5.2.10-1.el5.centos
php-mbstring-5.2.10-1.el5.centos
php-pdo-5.2.10-1.el5.centos
php-mysql-5.2.10-1.el5.centos
php-mcrypt-5.2.10-1.fc9.remi

一つだけ、fc9.remi となっているのは気持ち悪いが バージョンは揃いました。

アパッチを再起動して確認 ! して画面が正常に表示されました。

英語のサイトですが

http://wiki.centos.org/HowTos/PHP_5.1_To_5.2

を参考にしました。