PHP on Google App Engine

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

Advertisements

Snow LeopardでSymfony環境を作ろう

symfony環境確認:

$ httpd -v
Server version: Apache/2.2.11 (Unix)
Server built: May 18 2009 12:37:03

$ php -v
PHP 5.3.0 (cli) (built: Jul 19 2009 00:34:29)
Copyright (c) 1997-2009 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2009 Zend Technologies

$ pear -V
PEAR Version: 1.8.0
PHP Version: 5.3.0
Zend Engine Version: 2.3.0

0. php環境設定
$ sudo cp /etc/php.ini.default /etc/php.ini
$ sudo vi /etc/php.ini
[Date]
date.timezone = Asia/Tokyo

[Pdo_mysql]
pdo_mysql.default_socket=/tmp/mysql.sock

1. Symofnyインストール(1.0.21は不具合が発生したので、1.2.8にする)
$ sudo pear channel-discover pear.symfony-project.com
$ sudo pear install symfony/symfony-1.2.8
確認:
$ symfony -V
symfony version 1.2.8 (/usr/lib/php/symfony)

インストール先:
/usr/lib/php/symfony/
/usr/lib/php/doc/symfony/
/usr/lib/php/data/symfony/

2. プロジェクト・アプリケーション作成
$ cd Sites
$ mkdir mysymfony
$ cd mysymfony
$ symfony init-project mysymfony
$ symfony init-app myapp

3. Web(Apache)サーバー環境設定
$ sudo vi /etc/apache2/users/{username}.conf

Alias /~{username}/mysymfony/ /Users/{username}/Sites/mysymfony/web/
<Directory "/Users/{username}/Sites/mysymfony/web">
   AllowOverride All
   Allow from All
</Directory>

4. .htaccess修正
RewriteRule ^(.*)$ index.php [QSA,L]
↓↓↓
RewriteRule ^(.*)$ /~{username}/mysymfony/index.php [QSA,L]

5. テーブル作成
以下のようにテーブルを作成(データベース名は各自の環境にあわせる)
mysql

6. データベース接続設定
mysymfony/config/databases.yml 編集

all:
  propel:
    class:        sfPropelDatabase
    param:
      classname:  PropelPDO
      dsn:        mysql:dbname={databasename};host=localhost
      username:   {username}
      password:   {password}
      encoding:   utf8
      persistent: true
      pooling:    true

mysymfony/config/propel.ini 編集

propel.database.url        = mysql:dbname={databasename};host=localhost
propel.database.creole.url = ${propel.database.url}
propel.database.user       = {username}
propel.database.password   = {password}
propel.database.encoding   = utf8

7. データベース定義ファイルの生成
$ symfony propel-build-schema

8. オブジェクトモデルの生成
$ symfony propel-build-model

9. フォーム作成
$ symfony propel:build-forms

10. CRUD機能の自動生成(scaffolding)
$ symfony propel-generate-crud myapp bbs Bbs
$ symfony cc

11. アクセスしてみる
http://localhost/~username/mysymfony/bbs

Jailbreak iPhone 3G OS 3.1

環境:
Mac OS X 10.6 (Snow Leopard)
iTunes 9
PwnageTool_3.1.dmg
iPhone 3G OS 3.1

PwnageToolをダウロード
http://blog.iphone-dev.org/post/188779017/3-o-fun
http://torrents.thepiratebay.org/5089960/PwnageTool_3.1.dmg.5089960.TPB.torrent

JailBreak
PwnageTool.appを起動
jailbreak1

Expert ModeとiPhone 3Gを選択して次へ
jailbreak2

iPhone OS 3.1に該当する ipswを選択して次へ
jailbreak3

Generalを選択して、次へ
jailbreak4

Activate the phoneのチェックを外して、Root partition sizeを適当に入力して次へ
jailbreak5

デフォルトのまま次へ
jailbreak6

デフォルトのまま次へ
jailbreak7

デフォルトのまま次へ(CydiaとIcyをインストールしたくなければチェックを外す)
jailbreak8

iPhone起動時、リカバリ時のロゴをカスタマイズするかどうかを選択して、次へ
jailbreak9

Buildを選択して次へ
jailbreak10

カスタムipswファイルの保存先を選択して、次へ
jailbreak11

ビルド開始(途中でMacのユーザパスワードが聞かれるので入力)
jailbreak12

Noを選択
jailbreak13

画面に指示に従って電源ボタンを押して電源をOFF
jailbreak14

5秒待ち
jailbreak15

電源ボタンとホームボタンを10秒間押す
jailbreak16

ホームボタンを押したまま、電源をボタンを離して10秒間待つ
jailbreak17

DFU Modeになり成功
jailbreak18

iTunesのほうで以下の警告が出ますが、気にせず、OKボタンを押してiPhoneをUSBケーブルから外してから再度コネクト
jailbreak19

再コネクトすると、リカバリモードになる。
jailbreak20

[option]キーを押しながら復元ボタンを押して、デスクトップに生成させたカスタムipswファイル(iPhone1,2_3.1_7C144_Custom_Restore.ipsw)を選択して、開く
jailbreak21

JailBreak処理が開始され、後は待つだけ。

Mac OS X での httpd 設定メモ

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();
?>

Mac OS X に MySQL をインストール

1. セットアップファイルダウンロード
http://dev.mysql.com/downloads/mysql/5.1.html#macosx-dmg こちらから Mac OS X 10.5 (x86_64) をダウンロード

2. インストール
mysql.dmg

ディスクイメージを開いたら、デフォルトのオプションのまま、まず「mysql-5.1.38-osx10.5-x86_64.pkg」をインストール。次に、同じくデフォルトオプションのまま「MySQLStartupItem.pkg」をインストールし、さらに「MySQL.prefPane」をダブルクリック

3. 起動
システム環境設定を起動して、その他のところに「mysql」があるのでクリックして、「Start MySQL Server」

4. アンインストール
$ sudo rm -rf /usr/local/mysql
$ sudo rm -rf /Library/StartupItems/MySQLCOM/
$ sudo rm -rf /Library/PreferencePanes/MySQL.prefPane/

※ 公式とキュメントでは、「/Library/Receipts/mysql-.pkg にある旧バージョンの Package Receipt ディレクトリも削除してください」と書いてあるが、Snow Leopardではなかったので

5. 文字コードをutf8に設定
$ sudo cp /usr/local/mysql/support-files/my-medium.cnf /etc/my.cnf
$ sudo vi /etc/my.cnf

[client]
default-character-set=utf8

[mysqld]
default-character-set = utf8
skip-character-set-client-handshake
character-set-server = utf8
collation-server = utf8_general_ci
init-connect = SET NAMES utf8

mysqlサーバー再起動。

Mac OS X に Tomcat6 をインストール

1. Tomcatセットアップファイルをダウンロード
http://tomcat.apache.org/ こちらから Tomcat 6.x をクリックして、tar.gzファイルをダウンロード

2. インストール
インストールと言っても、単なる解凍、配置だけ
ターミナルを起動
$ sudo mv apache-tomcat-6.0.20.tar /usr/local/
$ cd /usr/local/
$ sudo tar xvf apache-tomcat-6.0.20.tar
$ sudo ln -s apache-tomcat-6.0.20 tomcat
$ sudo chown -R {username}:staff tomcat
$ sudo chown -R {username}:staff apache-tomcat-6.0.20

3. 起動
$ /usr/local/tomcat/bin/startup.sh
Using CATALINA_BASE: /usr/local/tomcat
Using CATALINA_HOME: /usr/local/tomcat
Using CATALINA_TMPDIR: /usr/local/tomcat/temp
Using JRE_HOME: /System/Library/Frameworks/JavaVM.framework/Versions/CurrentJDK/Home

4. プラウザでアクセス
http://localhost:8080/

5. 管理者画面にアクセスする為に設定
$ vi /usr/local/tomcat/conf/tomcat-users.xml
<tomcat-users>
<!–
<role rolename=”tomcat”/>
<role rolename=”role1″/>
<user username=”tomcat” password=”tomcat” roles=”tomcat”/>
<user username=”both” password=”tomcat” roles=”tomcat,role1″/>
<user username=”role1″ password=”tomcat” roles=”role1″/>
–>
<user username=”admin” password=”admin” roles=”standard,manager,admin”/>
</tomcat-users>

Tomcat6 + jre6でのエラー解決法

エラー内容:

[info] Starting service...
[174  javajni.c] [error] 指定されたモジュールが見つかりません。
[994  prunsrv.c] [error] Failed creating java 
               C:\Program Files\Java\jre6\bin\client\jvm.dll
[1269 prunsrv.c] [error] ServiceStart returned 1
[info] Run service finished.

 
解決法:

C:\Program Files\Java\jre6\bin\下の「msvcr71.dll」をC:\WINDOWS\system32にコピーする。