PHP

開発環境のEC-CUBEでユニットテスト

2013-07-28 EC-CUBE, PHP ,

EC-CUBEでローカルでユニットテストやるために、やったことメモ。
前提条件はリンク先を参考にみてもらって、EC-CUBEがJenkinsつかってやっているような処理を開発環境で行うために必要なものメモ。

前提条件

ローカル環境で独自で調整が必要なもの

1) EC-CUBEのインストールシェルを動かして成功すること

EC-CUBEの開発リポジトリに含まれている、 eccube_install.sh というシェルスクリプトがある。
これを開くと以下のようにEC-CUBEのconfig.phpを生成するために必要な情報。
DBのユーザーやパスワード、EC-CUBEをインストールするURL等の情報を設定するようになっている。

CONFIG_PHP="data/config/config.php"
ADMIN_MAIL=${ADMIN_MAIL:-"admin@example.com"}
SHOP_NAME=${SHOP_NAME:-"EC-CUBE SHOP"}
HTTP_URL=${HTTP_URL:-"http://213dev.local"}
HTTPS_URL=${HTTPS_URL:-"http://213dev.local/"}
DOMAIN_NAME=${DOMAIN_NAME:-""}

DBSERVER=${DBSERVER-"127.0.0.1"}
DBNAME=${DBNAME:-"cube213_dev"}
DBUSER=${DBUSER:-"postgres"}
DBPASS=${DBPASS:-"password"}

MySQL用とPostgres用でそれぞれ設定が違う箇所があるので、注意。
これを適宜設定して、
PostgeSQLなら
# ./eccube_install.sh pgsql
MySQLなら
# ./eccube_install.sh mysql
のように実行して、
EC-CUBEがインストールされた環境が立ち上がるようになっていればOK.
ここが上手くいかない場合は、ディレクトリのパーミッション設定、DBの接続まわりの設定が怪しいので確認してみてほしい。

2)Phing用の設定を行う

testsディレクトリの下にある以下のファイルをそれぞれ変更
# mv tests/require.php.base tests/require.php
# mv tests/phpunit.xml.base tests/phpunit.xml
あとは、EC-CUBEのパッケージのルートディレクトリで
# phing test
とすれば、Jenkinsで回した時のようにreportsディレクトリに結果が出力される。
reports/coverage のフォルダにはカバレッジが視覚的にみれるHTMLが出力されるので、結構面白い。

この他にも、わざわざ全部回すまでもなく、一部のテストケースだけテストしたいとかあれば
# phpunit –c tests/phpunit.xml tests/テストしたいテストケース.php
のようにテストケースを指定して行うこともできるようになる。

 

まだ、EC-CUBEのテストケースのカバレッジは低く30%程度だが、今後上げていきたい。
EC-CUBE本体のテストケースが充実されれば、カスタマイズした際の退行テストはかなり自動化できるようになるはず。

参考)EC-CUBE標準規約/単体テストガイドライン

CentOS6でPhingを使うためのメモ

2013-07-28 CentOS, PHP, 環境構築 , , , ,

CentOS6でPhingを使うためにインストールしたものメモ。

Pearをインストールして、chanelとか自動探査できるようにオプション設定と念のためアップグレートもかける

# yum install php-pear
# pear config-set auto_discover 1
# pear upgrade PEAR

基本のPHPUnitとPhingをインストールする

# pear install pear.phpunit.de/PHPUnit
# pear install pear.phing.info/phing

Xdebugも必要になるので入れておく

# pecl install xdebug
# vi /etc/php.ini 
[xdebug]
zend_extension=/usr/lib/php/modules/xdebug.so

これでどっかでテストコード作成して

# phing test

とかして通ればOK

wp_list_pagesのaタグに、alt属性とtitle属性を追加する。

2012-02-24 CMS, PHP

ワードプレスでリンクメニュー等を作る上でwp_list_pagesを利用するが、通常だとalt属性やtitle属性が付いていない。

Googleなどの検索結果の下にサイトリンクを出すのに、alt属性やtitle属性がついているといいらしいのでファイルを修正してつけてみた。
修正したのは wp-includes/post-template.php の1047行目
Wordpressのバージョンが3.3.1なので、バージョンによっては位置やファイルが違うかも。

$output .= $indent . '<li><a href="' . get_permalink($page->ID) . '" title="' . $page->post_title . '" alt="' . $page->post_title . '">' . $link_before . apply_filters( 'the_title', $page->post_title, $page->ID ) . $link_after . '</a

SSL下でのTwitterのボタンの設置

2011-07-22 PHP

仕事で、Twitterのつぶやくボタンの設置をしていたのだが、Twitterで標準提供されているAPIのJSがSSLに対応していなかったためSSL画面で警告がでまくりハマってしまった。

GETで渡すだけでも、ツイートできるようだったので、今後のためにメモ。

必要なもの:つぶやくボタンを予め準備して設置しておく。

注意:TwitterにGETで渡すURLやテキストはURLエンコーディングして渡す必要がある。

以下のJSを記載

<script type="text/javascript"> <!--

// Twitterへの投稿
function twitterPop(url, txt) {
mywindow = window.open('http://twitter.com/share?url='+url+'&text='+txt+'&lang=ja', "Tweet_widow", "channelmode=no, directories=no, location=no, menubar=no, scrollbars=no, toolbar=no, status=no, width=500, height=375, left=300, top=200");
mywindow.focus();
}

// --> </script>

以下をボタンを置きたい箇所にいれる。

<a href="" onclick="twitterPop('Twitterに渡すURLをURLエンコーディングしたもの','投稿画面に予め表示するテキスト'); return false;"><img src="つぶやくボタンのパス" alt="Tweet" /></a>

国産のオープンソースCMS、BaserCMSをインストールしてみた

2010-06-03 PHP , ,

青年会の方のサイトをCMS化したいとおもっていたところで、国産のCMSを探してみた。
pWebManager、SOY CMS、NetCommons、bingo!CMS core、Magic3、AD-EDIT2といろいろあったんですが、ちょっとCakePHPを勉強してみたいと思ったのと、結構最近(2009年12月)できたみたいでおもしろそうだったのでBaserCMSを採用!

以下、インストールメモ。
インストール環境

  • CentOS5.4
  • PHP5.1.6、Apache2.2.3
  • MySQL5.0.77

MySQLやPostgreSQLがなくても、CSVやSQLite3で利用できるらしいが、後々活用してみたい環境がMySQLなのでMySQLでインストールする。

○ソースの設定
▽サイトからダウンロードする

# wget http://basercms.net/files/basercms/basercms-1.5.7.zip
# unzip basercms-1.5.7.zip

▽解凍したソースをapacheのDocumentRoot用のディレクトリにコピー

# cp -rp basercms-1.5.7 /home/www/basercms.eumyang.net

○ インストールに必要な権限やファイルを設定しておく

# cd /home/www/basercms.eumyang.net/
# chmod 777 app/config
# chmod 777 app/config/core.php
# chmod -R 777 app/tmp
# chmod -R 777 app/webroot/themed/demo/pages
# chmod 777 app/db/

▽htaccessのファイルを有効にしておく

# mv htaccess.txt .htaccess
# mv app/webroot/htaccess.txt app/webroot/.htaccess

○ ApacheのVirtualHostを設定
▽confファイルを新規作成

# vi /etc/httpd/conf.d/basercms.eumyang.net.conf
———————————————————–
<VirtualHost *:80>
DocumentRoot /home/www/basercms.eumyang.net/
ServerName basercms.eumyang.net
CustomLog logs/baser_access_log combined
ErrorLog logs/baser_error_log
RewriteEngine on # ← mod_rewriteを利用するのでONにする
# ↓ 非公開にしておきたいので簡単にベーシック認証だけかけておく
<Location />
AuthType Basic
AuthName “Eumyang.NET Authorization”
AuthUserFile /etc/httpd/.passwd
AuthGroupFile /etc/httpd/.group
Require group [mygroup]
</Location>
</VirtualHost>
<Directory /home/www/basercms.eumyang.net/ >
AllowOverride All
</Directory>
———————————————————–

▽ベーシック認証用のアカウントを作成する

# htpasswd -c /etc/httpd/.passwd [username]
パスワード入力

▽グループも追加しておく

# vi /etc/httpd/.group
————————————-
[mygroup]: [username]
————————————-

▽Apacheを再起動

# /etc/init.d/httpd configtest
Syntax OK
# /etc/init.d/httpd restart
Stopping httpd:                                            [  OK  ]
Starting httpd:                                            [  OK  ]

○ MySQLのDBを作成

# mysql -u root -p
password:

▽DB作成

mysql> CREATE DATABASE baser_db DEFAULT CHARACTER SET utf8;

▽作成されていることを確認

mysql> SHOW DATABASES;

▽ユーザーの追加

mysql> GRANT ALL ON baser_cms_db.* TO baser_db_user@localhost IDENTIFIED BY ‘[パスワード]’ WITH GRANT OPTION;

▽ 作成されたユーザーを確認

mysql> SELECT user, password, host FROM mysql.user;

○ サイトにアクセスしてインストールを開始する
http://basercms.eumyang.net/

○ インストール完了後に、書き込み権限が必要なくなったフォルダの権限を変更する

# cd /home/www/basercms.eumyang.net/
# chmod 755 app/config/

■ 感想
CakePHPの知識が0なので、さっぱりw
別にテンプレ変えるだけでも結構いろいろ出来そう。
まぁ、せっかくなのでもっとしっかり使ってみます。

BaserCMS
・http://basercms.net/