Home > Tags > PHP
PHP
Mac 10.6.2 への apache 2.2.9 と php 5.3.1 のインストール
- 2009/12/27
- Web開発関連
mac には /usr/local ディレクトリがないのでまず作成する。
sudo mkdir /usr/local/src
sudo mkdir /usr/local/apache
sudo mkdir /usr/local/php
sudo chmod 777 /usr/local/src
次に apache のインストール。
wget http://archive.apache.org/dist/httpd/httpd-2.2.9.tar.gz
tar xzvf httpd-2.2.9.tar.gz
cd xzvf httpd-2.2.9
./configure --prefix=/usr/local/apache/httpd-2.2.9
make
sudo make install
cd /usr/local/apache/
sudo ln -s /usr/local/apache/httpd-2.2.9 current
gd を利用するのに libpng がいるので port でインストール。
php の make でエラーになったので iconv.c を編集する
http://d.hatena.ne.jp/hetima/20071028/1193576377
iconv_open を libiconv_open に、
iconv_close を libiconv_close に置換する。
php のインストール
wget http://jp.php.net/get/php-5.3.1.tar.gz/from/this/mirror
tar xzvf php-5.3.1.tar.gz
cd xzvf php-5.3.1
./configure --prefix=/usr/local/php/php-5.3.1 --with-apxs2=/usr/local/apache/current/bin/apxs --with-pdo-mysql=/opt/local/lib/mysql5 --with-gd --with-zlib --with-xsl --enable-mbstring --with-png-dir=/usr/X11
make
で、ここで行き詰まった。
make で下記エラーが発生して、コンパイルできない。
"_iconv_close", referenced from:
_do_convert in gdkanji.o
"_iconv", referenced from:
_do_convert in gdkanji.o
"_iconv_open", referenced from:
_do_convert in gdkanji.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make: *** [libs/libphp5.bundle] Error 1
iconv が駄目そうなので --without-iconv オプションを付ける。ついでに freetype も入れる。
http://bugs.php.net/bug.php?id=49267
これでなんとかコンパイルできた。
試してないけど以下のような記事もあった。
http://d.hatena.ne.jp/brtRiver/20090911/1252703372
あと /usr/local/php/current/bin/php がないのでシンボリックリンクを張って作る
oracle+phpでもっとも参考にするべき資料
やっぱり基本はオラクル本家のサイトでしょう。
PHP Developer CenterとかPHPとオラクルはオラクルで何か調べたりダウンロードしたりする時の基本中の基本 OTN 内のコンテンツ。
以下の PDF もいい。
「The Underground PHP and Oracle Manual Release 1.5」(PDF)
↓の本はオラクルで今まで一番よく読んだ本。
ソフトバンククリエイティブ
売り上げランキング: 145781

通勤電車で読めるOracle本
チューニングに悩んでいる方におすすめです
必読書です
DBエンジニア必見!
おすすめです。
sony vaio type g for php dev
- 2009/04/04
- Web開発関連
新しいマシンがきたので、PHP を開発するために必要な設定を順にやっていきます。やることがけっこうあって、だいたい丸一日ぐらいつぶれます。前のマシンでは coLinux を使っていたのを今回は vmware を利用しようと思います。あと php でデバッグできる環境を作りたいと思います。(自宅の mac では実践済み。)
- フォルダオプション、画面、ツールバー、スタートオプションの変更
- いつも通り好きになおす
- Apps ディレクトリ作成
- 自分でインストールするアプリケーションを保存するディレクトリを作成する
- xkeymacs
- http://www.cam.hi-ho.ne.jp/oishi/ から xkeymacs347.zip をダウンロード
- Ctrl キーと Caps Lock キーを入れ替え
- 設定をインポート
- firefox
- foxmarks
- Tab Mix Plus 0.3.7.3
- FireGestures
- Greasemonkey
- AutoPagerize
- Firebug
- YSlow
- Live HTTP headers
- SwitchProxy Tool 1.4.1
- (Html Validator)
- (Tamper Data 10.1.0)
- (Copy Plain Text)
- fenrir
- Ctrl + 8 を呼び出しキーに設定
- Process Explorer v11.33
- スタートメニューに登録
- Thunderbird
- Becky からデータインポート
- http://cubic9.com/Windows/Mozilla%20Thunderbird/Becky2%A4%AB%A4%E9%A4%CE%B0%DC%B9%D4/%A5%E1%A1%BC%A5%EB%A5%C7%A1%BC%A5%BF/
- DropBox
- 辞書をインポート
- Vmware Server 1.0.9
- vmware server
- 百式の人のブログの 2 系は使いにくいという情報を元に 1 系をインストール。たしかに前に 2 系をインストールしたら苦労した覚えが。。
- SISI だとエラーになったので IDE で対応
- ネットワークの設定は NAT で。http://labs.unoh.net/2006/11/vmwarecentos.html
- CentOS5
- yum update
- yum install screen
- yum install zsh
- chsh ※/bin/zsh を指定
- cd /usr/local/src/
- yum install gcc
- wget http://www.sqlite.org/sqlite-amalgamation-3.6.12.tar.gz
- yum install zlib-devel
- wget http://subversion.tigris.org/downloads/subversion-1.6.0.tar.gz
- wget http://ftp.gnu.org/pub/gnu/emacs/emacs-22.3.tar.gz
- yum install samba samba-swat
- vi /etc/xinet.d/swat
- /etc/init.d/xinetd start
- /etc/init.d/smb start
- http://vmware:901/
- yum install httpd mysql-server
- yum install php php-{mbstring,xml,mysql}
- vmware server
- 秀丸
- cse
- FileZilla Client
- IpMsg、View
- PuTTY ごった煮版
- TortoiseSVN
- Df.exe
- エクセル、パワポの読み取り専用メニュー
- Oracle
- Oracle Database 10g Express Edition (Universal)
- Oracle Database 10g Express Client
- sqlplus system/password@localhost/XE
- \oraclexe\app\oracle\product\10.2.0\server\NETWORK\ADMIN\tnsnames.ora
- フリーなのでインスタンスはひとつだけ。名前は XE。
- RealVNC日本語インストール版 4.1.2
- FinePrint 5
(VGN-G2)
symfony1.1以降で開発する際に必ず守ること箇条書き
- 2009/03/21
- Web開発関連
- schema.yml
- カラム名には id、created_at、updated_at、created_by、updated_by を利用する
- join して利用するテーブルには外部制約を必ず設定、テーブル名_id を利用する
- database.yml、propel.ini の設定は symfony configure:database コマンドを使う
- 命名規則
- 変数、関数名は camelCase で
- app.yml の変数名は snake_case で
- コメントなしでもわかるような名前をつけて、わかりきったコメントは書かない
- コーディングルール
- type hinting を使う
- if、for、foreach、switch 文の括弧は symfony 形式で
- 比較文に ==、!= は絶対に使わない。===、!== を利用する。でも is_null とかはもっと使え
- 文字列を連結する時はピリオドと文字列の間に半角スペース。(例)
$text = 'text1' . 'text2' . 'text3'
- php の定数は小文字で。(例)null、true、false など
- コード内のコメントなどに全角スペースを使わない
- 関数の return 値に空文字を使うなら null を使え
- 全体
- SQL 文を直接書かない、頑張って criteria で書く
- 共通処理は親クラスを作成し、継承して利用する
- クラスのプロパティは絶対に protected or private で
- symfony の lib ディレクトリ以下を理解するとかなりレベルアップ
- サーバ
- utf-8 で統一
- アクション
- アクションにビジネスロジックを書かない
- アクションに criteria を書かない
- モデル
- lib/model/om、map、lib/form/base の下はさわらない
- DB まわりのビジネスロジックは lib/model/xxxPeer.php に書く
- レコード単位の処理は lib/model/xxx.php に書く
- doSelectRS() で取得したレコードセットは populateObjects() を使ってオブジェクトに変換すると楽
- doSelectRs() で取得したレコードセットが 2 箇所以上から利用される場合は、レコードセットに合わせたモデルを作成し利用する
- DB の定数は xxxPeer.php に宣言
- 複数のモデルに共通の処理を挿入する場合は、sfPropelBehavior を利用する
- フォーム
- Form クラスを必ず使う
- Form まわりのビジネスロジックは lib/form/xxx に書く
- 親子関係のテーブルを Form で利用する時は embedForm を使う
- input タグの name は xxx[xxx] の形式で書く。bind する時のロジックが短くなる。$this->widgetSchema->setNameFormat('xxx[%s]') を使う
- sfUser を使いたい時は、sfContext::getInstance()->getUser() を利用する
- バリデーター
- 複数フィールドのバリデートには setPreValidator()、setPostValidator() を使う
- テンプレート
- テンプレートには if、for などの簡単な条件分岐以外で php を利用しない
- layout 内で動的に切り替わる要素を使いたい場合は slot を利用する
- form を利用している時はテンプレートに関するロジックは form で、form を利用しない時は、viewXxx.class.php を作成しコンストラクタでオブジェクトを渡してロジックは view クラス内に閉じ込める
- routing.yml
- get パラメーターのチェックは routing.yml で
- エラー
- 400、500、unavailable.php の 3 つが設定対象
- 保留
- (ある程度規模が大きくなると、lib/service/serviceXxx.class.php みたいな symfony にできるだけ依存しないビジネスロジッククラスを作る案もありかも)
- ヘッダーコメント
* 概要
*
* @package xxx
* @subpackage xxx
* @author mei sei
* @copyright (c) 2009 company_name inc.
* @version SVN: $Id$
*/
↓↓↓は本屋で売ってる唯一の symfony 本。始めは買わなかったけど、結局買った本。ないよりは全然まし。
ソフトバンククリエイティブ
売り上げランキング: 208898

Symfony1.2には未対応
2冊目に買うべき本
この本は酷い
誤植が・・・
動作するjobeetサイト
- 2009/03/19
- Web開発関連
今まで jobeet の svn はあったけれど動作するサイトがないなあと思っていたら見つけました。ちょっとさわると、jobeet には symfony を使ったプレビュー画面がありました。いろいろ方法はあるけどこれという決定打がないのでプレビューの参考になるかもしれません。
symfonyでsqlを節約
- 2009/02/25
- Web開発関連
doSelectJoinXXX()
っていう関数を使うと 2 つのテーブルを join した結果を SQL 1 本で取得できる。
この関数は schema.yml で外部参照を設定すると自動で生成される。
symfonyでセッションを利用するときにやっといたほうがいいこと
- 2009/02/24
- Web開発関連
ひとつは、セッション名の変更。
all:
storage:
class: sfSessionStorage
param:
session_name: my_cookie_name
もう一つは有効期限の設定。
all:
user:
class: myUser
param:
timeout: 1800 # 秒単位のセッションの寿命
php のセキュリティをざっと理解するには↓↓
symfony1.1でフロントと管理ツールの公開ディレクトリを切り替える方法
symfony の web ディレクトリはフロントとバックヤードで共通になってしまう。気持ち悪いので、切り替える方法を考えてみた。
まず以下のように backend ディレクトリを作成する。中身は web ディレクトリをそのままコピーする。
apps/
cache/
config/
data/
doc/
lib/
log/
plugins/
test/
web/
backend/ ← バックヤード用の公開ディレクトリを作成
次に、以下のように config/ProjectConfiguration.class.php の setup メソッドで公開ディレクトリを変更する。
[php]
class ProjectConfiguration extends sfProjectConfiguration
{
public function setup()
{
$this->setWebDir($this->getRootDir().'/backend');
}
}
あとはドキュメントルートを backend に設定すれば、フロントとバックで別ディレクトリを利用できるはず。でも結局ドキュメントルートを切り替える必要がある。。
技術評論社
売り上げランキング: 62157

情報弱者向けの本
エッセンスがよくまとまっている
symfony1.1+oracle用のパッチファイル
- 2009/02/19
- Web開発関連
symfony1.1 + oracle で propel:build-all を実行すると、propel:insert-sql でエラーが発生する。原因は、生成された SQL 内(data/sql/lib.model.schema.sql)のコメントがオラクルのコメントになっていないことと、テーブル名とカラム名がダブルコーテーションで囲まれていることです。
毎回 sql を修正しているわけにもいかないのでパッチを作って対応しました。
これで propel:build-all-load frontend みたいなコマンドもするっと実行できます。
ソフトバンククリエイティブ
売り上げランキング: 166284

2冊目に買うべき本
この本は酷い
誤植が・・・
環境変数の NLS_LANG の使い方
- 2009/02/13
- データベース関連
環境変数の NLS_LANG って今までよくわかってなかった。
今日はまってやっと理解したのが、NLS_LANG はオラクルクライアント側の文字コードを指定するものだということ。オラクルはデータベースの文字コードと NLS_LANG を比較して異なる場合は、データベースにデータを格納する際にデータベースの文字コードに変換して格納するという機能がある。今回 NLS_LANG を間違ってデータベース側の文字コードを設定していたので、文字コード変換がされず不具合になっていた。
PHPfestチュートリアル:Oracle Database 10g Express EditionおよびZend Core for Oracle
Oracleデータベースは指定された文字セットで作成されます。 PHPでは、NLS_LANG環境変数を設定することで独自の文字セットを選択できます。 Oracleクライアント(PHP)のグローバリゼーション設定では、ロケールのための適切なデータ形式、Oracleのエラー・メッセージに使用される言語、言語のソートの順番などのデフォルト値を指定できます。 NLS_LANGは、Webサーバーを起動する環境で設定する必要があります。
ホーム > タグ > PHP

![symfony徹底攻略 [PHP徹底攻略シリーズ] (PHP徹底攻略シリーズ)](http://ecx.images-amazon.com/images/I/51wL5doVKJL._SL160_.jpg)

![symfony×PHP [LLフレームワークBooks] (LLフレームワークBOOKS # 3)](http://ecx.images-amazon.com/images/I/41gbS%2BvOscL._SL160_.jpg)