Info

Posts from the PHP Category

sakura vps ちょっと弄ってみた。
環境:CentOS 6.3, Nginx 1.2.3

phpインストール
デフォルトでphp入ってたので削除

既存のphpをアンインストール

$ sudo yum remove php*
・・・
Remove        6 Package(s)
Installed size: 15 M
Is this ok [y/N]: y

標準のリポジトリにはphp-fpmがないため、REMIレポジトリを追加する。

$ wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
$ sudo rpm -ivh remi-release-6.rpm 

必要なライブラリをインストール

$ sudo yum install php php-fpm php-devel php-cli php-xml  php-mbstring php-gd --enablerepo=remi

バージョン確認

$ php -v
PHP 5.3.16 (cli) (built: Sep  4 2012 15:23:10)
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

$ php-fpm -v
PHP 5.3.16 (fpm-fcgi) (built: Sep  4 2012 15:25:35)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2012 Zend Technologies

php-fpm 起動

$ sudo /etc/init.d/php-fpm start

nginx confファイル編集

location ~ \.php$ {
        fastcgi_pass   127.0.0.1:9000;
        fastcgi_index  index.php;
        fastcgi_param   SCRIPT_FILENAME  $document_root$fastcgi_script_name;
        include        fastcgi_params;
}

php-mysql インストール

$ sudo yum install php-mysql --enablerepo=remi

phpinfoで確認してみる

<?php
phpinfo();
?>
Advertisements

appengine-java-php

1. Quercusライブラリダウンロード
http://quercus.caucho.com/ から Quercus 3.1.6をダウンロードする(Quercus 4.0.1は文字化けが発生するので、今回は3.1.6を使うようにする)
jar xf quercus-3.1.6.war
(quercus.jar, resin-util.jar, script-10.jar)

2. Jettyライブラリダウンロード
http://dist.codehaus.org/jetty/jetty-6.1.17/ から jetty-6.1.17.zip をダウンロード
(jetty-6.1.17.jar, jetty-util-6.1.17.jar)

3. ライブラリをlibフォルダに入れる
1と2で取得したjarファイルを war/WEB-INF/lib に入れる

4. 設定ファイル修正
4-1 appengine-web.xml

<static-files>
  <exclude path="/**.php" />
</static-files>
<resource-files>
  <include path="/**.php" />
</resource-files>

 
4-2 web.xml

<servlet>
  <servlet-name>Quercus Servlet</servlet-name>
  <servlet-class>com.caucho.quercus.servlet.QuercusServlet</servlet-class>
  <init-param>
    <param-name>script-encoding</param-name>
    <param-value>UTF-8</param-value>
  </init-param>
  <init-param>
    <param-name>ini-file</param-name>
    <param-value>WEB-INF/php.ini</param-value>
    </init-param>
</servlet>
<servlet-mapping>
  <servlet-name>Quercus Servlet</servlet-name>
  <url-pattern>*.php</url-pattern>
</servlet-mapping>

 
4-3 php.ini ファイル作成
war/WEB-INF の下に php.ini ファイルを新規作成

unicode.semantics=on
unicode.http_input_encoding=UTF-8
unicode.output_encoding=UTF-8
unicode.runtime_encoding=UTF-8

 
5. info.php
warの下にinfo.phpを作成

<?php
phpinfo();
?>

 
6. アクセスしてみる。
http://localhost:8080/info.php

1. 各ソフトウェア確認
$ perl -v
This is perl, v5.10.0 built for darwin-thread-multi-2level

$ php -v
PHP 5.3.0 (cli) (built: Jul 19 2009 00:34:29)

$ python -V
Python 2.6.1

2. confファイル修正
$ sudo vi /private/etc/apache2/httpd.conf

#コメントを外す(php用)
LoadModule php5_module libexec/apache2/libphp5.so

#コメントを外す(perl, python CGI用)
AddHandler cgi-script .cgi

$ sudo vi /private/etc/apache2/users/{username}.conf
# ExecCGI追加

<Directory "/Users/{username}/Sites/">
    #Options Indexes MultiViews
    Options Indexes MultiViews ExecCGI
    AllowOverride None
    Order allow,deny
    Allow from all
</Directory>

 
3. 確認

perl.cgi

#!/usr/bin/perl
print "Content-type: text/html\n\n";
foreach(sort keys %ENV){
    print "$_: $ENV{$_}
\n"; }

python.cgi

#!/usr/bin/python
import os
print "Content-type: text/html\n\n";
for param in os.environ.keys():
  print "%20s %s<br/>" % (param,os.environ[param])

test.php

<?php
    phpinfo();
?>

いきなりですが、

$ pear upgrade pear
・・・・・・
requires package `Archive_Tar’ >= 1.3.1
PEAR: Dependencies failed
$

Archive_Tar のバージョンが古いらしい。
$ pear list
Package Version State
Archive_Tar 1.1 stable
Console_Getopt 1.2 stable
・・・・・
$

先に Archive_Tarのバージョンをあげる。(ルート権限で)
# pear upgrade Archive_Tar
…..done: 15,102 bytes
upgrade ok: Archive_Tar 1.3.1
#

もう一回ためし
# pear upgrade pear
upgrade ok: PEAR 1.4.11
#

上手く行った様だ。
# pear channel-discover pear.symfony-project.com
Adding Channel “pear.symfony-project.com” succeeded
Discovery of channel “pear.symfony-project.com” succeeded
# pear install symfony/symfony
・・・・
PHP Fatal error: Allowed memory size of 8388608 bytes exhausted
(tried to allocate 58368 bytes) in /usr/share/pear/PEAR/Task/
Replace.php on line 170
またまたエラー、メモリサイズが小さいみたい、php.iniのmemory_limit=20Mにしてリトライ

# pear install symfony/symfony
………………………done: 1,283,270 bytes
install ok: channel://pear.symfony-project.com/symfony-0.6.3

今度は上手くいったよう
# symfony -V
symfony version 0.6.3
#

万歳!

PHPを使ったプロジェクトをそろそろ始まるところで、今世の中で流行ってるフレームワークを使ってみようと調べてみたらこんなもの見つけました。

Top 10 PHP MVC frameworks

  1. Symfony: Based on Mojavi and inspired by Rails
  2. Mojavi: The first MVC framework I fell in love with
  3. CakePHP: Inspired by Rails PHP4/5
  4. PHPOnTrax: a Rails port – PHP5 Only
  5. Prado: The winner of Zend coding contest
  6. Studs: A Java-Struts port to PHP
  7. Phrame: A Java-Struts port
  8. Achievo: A good RAD framework
  9. WACT: Web Application Component Toolkit
  10. Ambivalence: A Java-Maverick Port

何にしようかな?Symfonyを使ってみようと思ってたが、Smartyの組み込みが難しいと
これも悩むことだね、いつかStrutsのようなデファクトスダンダートは出てこないかな???

日本語キーボードから「半角ダッシュ」入力できる?

  • ー [全]長音
  • - [全]マイナス
  • – [半]ハイフン、マイナス
  • ー [半]長音
  • ― [全]ダッシュ
  • ‐ [全]ハイフン

いろいろ試してみたが、駄目でした。ユーザはどうやって入力できったんだろう?いたずら?

PostgreSQLのキャラクターセットをUTF8以外に設定した場合、半角ダッシュは登録されないらしいです。2ヶ月前にリリースしたシステムでバグリました。正確に言うと2年前にリリースしたシステムなんですけどね...うっん。 何社経由して来たが、今回 ”運がよかった” のでぴったりあたりました。ハハハ~

そろらくMysqlも同じでしょう。