* [[PHP]]
どうもこのLinuxのPHPはマルチバイトに対応してなさそなので、今後のことも考えまして、インストールしてみます。言語的にはわかりやすく、初めて触るのにはJAVAみたいにいろいろ覚えなくてもいいので、ちょうどいいかもしれません。ただし自分にはつかいやすい開発ツールがないがちょっと...~
#contents

** 環境設定
http://jp.php.net/downloads.phpからComplete Source Codeをダウンロードします。
PHP 4.3.9をダウンロードしました。PHP 4.4.0(2005/07/13)が出てます。
 tar -xzf php-4.3.9.tar.tar
展開後、自分のマシンにphpがインストールしてある場合は、
 rpm -qa | grep php
で確認し、
 rpm -qa | grep php | xargs rpm -e
で削除します。
 ./configure --with-apxs=/usr/local/apache/bin/apxs --enable-mbstring --enable-mbregex -with-ldap=/usr/local
ldapを使いたい場合は、-with-ldap=/usr/localを指定します。
 make
 make install
インストールが終了しましたら、バージョンを確認します。
 php -v
php.iniは/usr/local/libにいました。いない場合は解凍した直下にphp.ini-distがありますので、これをコピーしておきましょう。またphp.iniを見ると、
 log_errors = On
 ;error_log = filename
となってますが、error_log = filenameのコメントを取ってfilenameを設定しておけば、ログに残ります。magic_quotes_gpcという設定がある場合は確認しておきましょう。onになっている場合は、シングルクオートなどの文字が自動的にバックスラッシュがついて値が渡されますので、意図しない結果になるときがあります。
apache2では
 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring --enable-mbregex --without-mysql --enable-trans-sid --enable-memory-limit --with-dom --enable-sockets
うまく動けば、apacheと連携のためにhttpd.confを修正します。PHP 4.3.4 からは。--enable-mbstringを指定しておけば--enable-mbregexはいらないみたいです。ここで、libphp4.soがない場合は、失敗してます。私は何度かやってみたんですが、どうしてもできなかったので、./configureに--without-mysqlを追加してやるとうまくいきました。また解凍したディレクトリを一度消し、再度やるとうまくいくときがありました。いまいち原因はわかりません。一度mysqlをインストールしなおすとうまくいきました。postgresqlのモジュールがいる場合は、--with-pgsql=/usr/local/pgsqlを追加してください。またPHPからhttps通信を行う場合は、--with-ssl=/usr/local/ssl --with-curlを追加します。curlでエラーが出るときはhttp://curl.haxx.se/download.htmlからダウンロードします。さらにftpを使う場合は、--enable-ftpを追加します。MaxDBの場合は--with-maxdb=/opt/sdbを追加です。--enable-trans-sidはクッキーが使えない時にセッションIDをHTTPパラメータとして付加してくれます。--enable-memory-limitはメモリ制限ができるようになります。--enable-zend-multibyteはスクリプトをShift_JISで記述できます。これをつかった場合に以前[[phpMyAdmin]]をインストールしたときに
 Parse error: parse error, expecting `')'' in /phpMyAdmin/lang/japanese-euc.inc.php on line 17
とエラーがでてしまったので、つけるのはやめました。 --with-domはxml系の関数を使いたいので、指定しています。--enable-socketsはphpでデーモンを作りたかったんで。
 LoadModule php4_module modules/libphp4.so 
 AddType application/x-httpd-php .php
再度インストールするときにsapi/cli/php_cli.oがないとかいわれたことがあります。このときは、一度ソースのディレクトリを消して、再度展開後、configureをしましょう。
あとphp.iniをhttp://www.net-newbie.com/postgres/php.ini-recommended.txtに
日本語での説明があります。とりあえず直しているのは、
 ; GET/POST/Cookie の入力データに関して特殊文字をエスケープ これしてないとしてほしくないものまで勝手にエスケープされちゃった
 magic_quotes_gpc = Off
 ;mbstring で使用される言語設定(NLS)のデフォルト値
 mbstring.language = Japanese
 ;mb_internal_encoding();で返されます。
 mbstring.internal_encoding = EUC-JP
 ;全てのメール、文字列、正規表現関数をオーバーロード
 mbstring.func_overload = 7
 sendmail_path = /var/qmail/bin/qmail-inject
 include_path = ".:/usr/local/php:/usr/local/lib/php";

** PHP5
そろそろ4ばかりもつかっておれないので、いれてみましょう。
 wget http://jp.php.net/get/php-5.2.5.tar.gz/from/this/mirror
 cd php-5.2.5
 ./configure --with-apxs2=/usr/local/apache2/bin/apxs \
 --enable-mbstring --enable-mbregex --enable-track-vars \
 --with-mysql=/usr/local/mysql5 \
 --with-pdo-mysql=/usr/local/mysql5 --with-zlib-dir=/usr/local/lib \
 --with-mcrypt
zlib-dirは/usr/libかも libz.dylibを探してみましょう。CLIは
 php-5.2.5/sapi/cli
にありますので、
 cp php /usr/local/bin/
とでもしておきます。
 --enable-track-vars フォームとCookieからの入力が簡単な記述で受け取れるみたい。5.2.6ではないっていわれた。
 --with-mysql mysqlを使います。
 --with-mcrypt 暗号、復号用です。
もし
 configure: error: mcrypt.h not found. Please reinstall libmcrypt.
ってなエラーが出るときは、http://mcrypt.sourceforge.net/より
 wget http://downloads.sourceforge.net/mcrypt/libmcrypt-2.5.8.tar.gz?modtime=1171868460&big_mirror=0
 tar xzvf libmcrypt-2.5.8.tar.gz
 cd libmcrypt-2.5.8
 ./configure
 make
 make install 
** windows
解凍したディレクトリにphp.ini-distがあるので、c:\windowsにphp.iniでコピーして、書きかえましょう。http://2php.jp/php/install_php_windows.html#setting_php
 output_buffering = On
 output_handler = mb_output_handler
 default_charset = Shift_JIS
 extension_dir = "c:\PHP\extensions\"
 extension=php_mbstring.dll
 session.save_path = c:/temp
 [mbstring]
 mbstring.language = Japanese
 mbstring.internal_encoding = EUC-JP
 mbstring.http_input = auto 
 mbstring.http_output = SJIS
 mbstring.encoding_translation = On
 mbstring.detect_order = auto
 mbstring.substitute_character = none;

[[DBG: Php Debugger: Download>shttp://dd.cron.ru/dbg/downloads.php]]からデバッガをダウンロードする。
zipファイルを展開して,serverフォルダの下にある自分のPHPの環境に一致するphp_dbg.dll-(PHPversion)を,php_dbg.dllにリネームして,c:\php\extensionsにコピーする。

c:\windows\php.iniを開いて,以下を追加する。
 extension=php_dbg.dll
 [Debugger]
 debugger.enabled=on
 debugger.profiler_enabled=on
c:\php\php4ts.dllをc:\windowsにコピーする。これをしてないとapacheで連携時に落ちる。またApacheと連携させる場合は、
 LoadModule php4_module c:/php/sapi/php4apache2.dll <-apache1系の場合はphp4apache.dll
 AddType application/x-httpd-php .php
をhttpd.confに追加
windowsディレクトリにコピーしたくない場合は、
 PHPIniDir "c:\php"
と指定します。
久々にWindowsで使おうと思って、httpd.confを直したら、apacheが立ち上がらん
 \x8ew\x92\xe8\x82\xb3\x82\xea\x82\xbd\x83\
さすが、windows。最近IISでもサポートされたらしですが、全く興味なし。
といっていても仕方がないので、http://www.apachelounge.com/download/から
 php4apache2.dll-php4.4.x.zip
をダウンロードして差し替えました。
** ZZIPlib
zipファイルを扱いたいので、http://zziplib.sourceforge.net/よりダウンロードしました。
 bunzip2 zziplib-0.10.82.tar.bz2
 tar xf zziplib-0.10.82.tar
 cd zziplib-0.10.82
 ./configure
 make
 make install

** GD
GDライブライリーです。画像を作成したりするライブラリみたいです。
http://www.gadgety.net/shin/tips/unix/php-gd.htmlに丁寧な説明がありますので、ぜひ読んでおきましょう。
まずzlibをインストールしておきます。http://www.zlib.net/よりダウンロードしました。
 wget http://www.zlib.net/zlib-1.2.3.tar.gz
 tar xzvf zlib-1.2.3.tar.gz
 cd zlib-1.2.3
 ./configure --shared --prefix=/usr
ここでleopardの場合、--sharedをつけているとjavaが動かなくなってしまったので、とりあえず外してます。
 make
 make install
まずlibjpegをインストールします。
 wget http://www.ijg.org/files/jpegsrc.v6b.tar.gz
 tar xzvf jpegsrc.v6b.tar.gz
 cd jpeg-6b
 ./configure --enable-shared
 make
 make install
怒られました。
 cannot create regular file `/usr/local/man/man1/cjpeg.1'
んー とりあえず/usr/local/man/man1のディレクトリを作って逃げました。
mac OSXの場合libtoolがないっておこられますので、先にGDを落としてそこにあるlibtoolをコピーしてきましょう。また jconfig.hがないとかいわれる場合は、再度configureしてみましょう。
libpngを入れておく場合は、http://www.libpng.org/pub/png/(http://www.libpng.org/pub/png/libpng.html)からダウンロードします。
またlibtiffを入れる場合は、http://www.libtiff.org/(ftp://ftp.remotesensing.org/pub/libtiff/)からダウンロードします。
 ./configure
 make 
 make install
です。
ではGDをhttp://www.boutell.com/gd/からダウンロードしました。
 wget http://www.boutell.com/gd/http/gd-2.0.33.tar.gz
解凍後
 ./configure --without-libiconv-prefix
 make
 make install
mac OSXの場合、makeで
 gdft.c:113:31: error: freetype/freetype.h: No such file or directory
とかいわれてしまいました。仕方がないので、http://www.freetype.org/(http://freetype.sourceforge.net/index2.html)から
 wget http://download.savannah.nongnu.org/releases/freetype/freetype-2.1.10.tar.gz
 tar xzvf freetype-2.1.10.tar.gz
 cd freetype-2.1.10
 ./configure --enable-static
 make
 make install
 ln -s /usr/local/include/freetype2/freetype /usr/local/include/freetype
まだだめか。次はfontconfigでエラーだ。
 ln -s /usr/X11R6/include/fontconfig /usr/local/include
これでmake,make installです。
参考 http://isl.educ.fukushima-u.ac.jp/~shinoda/net-docs/moodle-on-macosx.html~
また--enable-gd-native-ttfは英数字を描画してくれます。

あとは --with-gd,--with-zlib-dir=/usr/local/libをつけて再度phpをインストール。最終的に
 ./configure --with-apxs2=/usr/local/apache2/bin/apxs --enable-mbstring
 --enable-mbregex --with-gd=/usr/local --with-jpeg-dir=/usr/local 
 --with-pgsql=/usr/local/pgsql/ --with-zlib --with-zlib-dir=/usr/local/lib --enable-sockets
 --with-imap --with-mysql=/usr/local/mysql --with-ssl=/usr/local/ssl --with-curl
 --enable-ftp --with-maxdb=/opt/sdb -with-ldap=/usr/local --enable-trans-sid 
 --enable-memory-limit --with-freetype-dir=/usr/local/include/freetype2 
 --enable-gd-native-ttf --enable-gd-jis-conv --with-dom --with-zip
 --enable-gd-native-ttf --enable-gd-jis-conv --with-dom --with-zip --with-openssl
ここでundefined reference to `gdFreeFontCache'とエラーが出た場合は、ext/gd/gd.c の382行目あたりのgdFreeFontCache();を 
 /*gdFreeFontCache();*/
でコメントしておきましょう。またついでに[[Netpbm]]も入れておきました。--with-zipは[[ZZIPlib]]を参照してください。
Cannot find rfc822.hとでるときはしたのTIPSを参考にしてください。
**JpGraph
GDを扱う時のインターフェイスです。http://www.aditus.nu/jpgraph/よりダウンロードしました。
 wget http://members.chello.se/jpgraph/jpgdownloads/jpgraph-1.18.tar.gz
 (wget http://members.chello.se/jpgraph/jpgdownloads/jpgraph-1.20.3.tar.gz)
 tar xzvf jpgraph-1.18.tar.gz
phpのinclude_pathにコピーしておきます。
 cd jpgraph-1.18
 cp -R src/ /usr/local/lib/php/jpgraph

 wget http://keihanna.dl.sourceforge.jp/efont/10087/sazanami-20040629.tar.bz2
 bunzip2 sazanami-20040629.tar.bz2
 tar xf sazanami-20040629.tar
 mkdir /usr/local/fonts
 mkdir /usr/local/fonts/truetype
 cd sazanami-20040629
 cp sazanami-mincho.ttf /usr/local/fonts/truetype/sazanami-mincho.ttf
 cp sazanami-gothic.ttf /usr/local/fonts/truetype/sazanami-gothic.ttf
では/usr/local/lib/php/jpgraph/jp-config.incを開いて、
 //DEFINE("CACHE_DIR","/tmp/jpgraph_cache/");
 //DEFINE("TTF_DIR","/usr/X11R6/lib/X11/fonts/truetype/");
 //DEFINE("MBTTF_DIR","/usr/share/fonts/ja/TrueType/");
を
 DEFINE("CACHE_DIR","/tmp/jpgraph_cache/");
 DEFINE("TTF_DIR", "/usr/local/fonts/truetype/");
 DEFINE("MBTTF_DIR","/usr/local/fonts/truetype/");
また
 // Japanese TrueType font used with FF_MINCHO, FF_PMINCHO, FF_GOTHIC, FF_PGOTHIC
 DEFINE('MINCHO_TTF_FONT','ipam.ttf');
 DEFINE('PMINCHO_TTF_FONT','ipamp.ttf');
 DEFINE('GOTHIC_TTF_FONT','ipag.ttf');
 DEFINE('PGOTHIC_TTF_FONT','ipagp.ttf');
を
 DEFINE('MINCHO_TTF_FONT','sazanami-mincho.ttf');
 DEFINE('PMINCHO_TTF_FONT','sazanami-mincho.ttf');
 DEFINE('GOTHIC_TTF_FONT','sazanami-gothic.ttf');
 DEFINE('PGOTHIC_TTF_FONT','sazanami-gothic.ttf');
次にテンポラリのディレクトリ作成
 mkdir /tmp/jpgraph_cache
 chmod 777 /tmp/jpgraph_cache
http://www.gadgety.net/shin/tips/unix/php-gd.htmlを大変参考にさせていただきました。ありがとうございます。
 $data_yes     = mb_convert_encoding("好き", "UTF-8", "auto");
にしているとだめだったので、
 $data_yes     = mb_convert_encoding("好き", "UTF-8", "EUC-JP");
で日本語が表示されました。
** 文字コード
/usr/local/lib/php.iniのmbstringからmbstring.internal_encodingがありますが、これが、保存したスクリプトの文字コードとの不一致によって文字化けしてしまいます。

** PHPアクセラレータ 
PHPAはPHPを2~10倍早くしてくれるそうです。ほかにもMMCacheや[[eAccelerator>http://eaccelerator.net/HomeUk]]というのもありますが、先にPHPAから。http://www.asial.co.jp/ioncube/accelerator/download_accelerator.phpからダウンロードしました。4.4.0用もあります。
 tar xzvf php_accelerator-1.3.3r2_php-4.3.0_linux_i686-glibc2.1.tgz
 mv php_accelerator-1.3.3r2_php-4.3.0_linux_i686-glibc2.1.3/ /usr/local/lib/phpA
そして、php.iniに
 zend_extension="/usr/local/lib/phpA/php_accelerator_1.3.3r2.so"
を追加して、apacheを再起動します。ここで実際に動いているか確かめたい場合は、
 <?php
   var_dump($GLOBALS['_PHPA']);
 ?>
として、このファイルをブラウザから表示すると、
 array(3) { ["ENABLED"]=> bool(true) ["iVERSION"]=> int(10303) ["VERSION"]=> string(7) "1.3.3r2" } 
と表示されていればOKです。NULLとか表示された場合は、apacheのエラーログをみてください。apacheのabで測定してみくらべてみください。~
 [Sun Jan 08 00:11:03 2006] [notice-phpa] PHPA 1.3.3r2 on linux_i686_glibc2.1.3 (pid 26261)
 [Sun Jan 08 00:11:03 2006] [notice-phpa] Initialised 8MB cache at 0xb750f000 with 512 process entries (pid 26261)
なんかログが出まくっている....

ちょっと違いますが、参考のURL: http://www.asial.co.jp/ioncube/accelerator/phpa_serverhang.php~

では次に[[eAccelerator>http://eaccelerator.net/HomeUk]]をインストールしてみましょう。ダウンロードして、解凍して、READMEをよみます。するとQuick installとありますので、そのとおりにやっていきます。
 wget http://bart.eaccelerator.net/source/0.9.5.1/eaccelerator-0.9.5.1.tar.bz2
 bunzip2 eaccelerator-0.9.5.1.tar.bz2
 tar xf eaccelerator-0.9.5.1.tar
 cd eaccelerator-0.9.5.1
 export PHP_PREFIX="/usr"
 $PHP_PREFIX/bin/phpize
/usr/local/bin/phpizeにある場合もあるので、その場合は、export PHP_PREFIX="/usr/local"にしておきます。
[[玄箱]]の場合、実行すると、aclocalがないとかって怒られたので、dselectでautomake,autoconf,libtoolをインストール。その後、Cannot find config.m4とでる。どうもeAcceleratorを解凍した場所で実行しないといけないようだ。
 ./configure \
 --enable-eaccelerator=shared \
 --with-php-config=$PHP_PREFIX/bin/php-config
 make
 make install
 >Installing shared extensions:     /usr/local/lib/php/extensions/no-debug-non-zts-20020429/
ではphp.iniを編集しましょう。zend_extensionは自分の環境で置き換えてください。
 zend_extension="/usr/local/lib/php/extensions/no-debug-non-zts-20020429/eaccelerator.so"
 eaccelerator.shm_size="16"
 eaccelerator.cache_dir="/tmp/eaccelerator"
 eaccelerator.enable="1"
 eaccelerator.optimizer="1"
 eaccelerator.check_mtime="1"
 eaccelerator.debug="0"
 eaccelerator.filter=""
 eaccelerator.shm_max="0"
 eaccelerator.shm_ttl="0"
 eaccelerator.shm_prune_period="0"
 eaccelerator.shm_only="0"
 eaccelerator.compress="1"
 eaccelerator.compress_level="9"
 eaccelerator.keys     = "shm_and_disk"
 eaccelerator.sessions = "shm_and_disk"
 eaccelerator.content  = "shm_and_disk"
次に
 mkdir /tmp/eaccelerator
 chmod 0777 /tmp/eaccelerator
ではapacheを再起動です。
展開したディレクトリにeaccelerator.phpがありますので、これで確認してみましょう。~
ただし、mysqlとかのDBにアクセスしている場合、さほど効果はでません。ですので、mysqlのほうをチューニングしましょう。
[[APC (Alternative PHP Cache)>http://pecl.php.net/package/APC]]は、開発が活発なので、今度試してみます。

参考:[[PHPアクセラレータで一番高速なのはどれか?>http://gigazine.net/index.php?/news/comments/20061103_php_accelerator/]]~
[[PHP:eAccelerator で PHP 高速化>http://php.y-110.net/wiki/index.php?PHP%A1%A7eAccelerator%20%A4%C7%20PHP%20%B9%E2%C2%AE%B2%BD]]~
** PHPEclipse
http://www.phpeclipse.de/tiki-view_articles.phpからダウンロードしました。[[Eclipse]]のプラグインです。3.0.1はインストールしておいてください。またhttp://dd.cron.ru/dbg/downloads.phpからDBG 2.11.32 dbg modulesをダウンロードして、php_dbg.dll-4.3.8をphp_dbg.dllに変更して、C:\PHP\extensionsにコピーします。
またwindows配下のphp.iniに
 extension=php_dbg.dll
 [Debugger]
 debugger.enabled = on
 debugger.profiler_enabled = on プロファイルを使用する場合
 debugger.JIT_host = clienthost デバック用クライアントの名前orIP clienthostであれば自動的にクライアントで実行されているリスナになる。
 debugger.JIT_level = 3  1:致命的エラーのみ 2:エラーのみ 3:エラーと警告 4:さらに通知
 debugger.JIT_port = 7869 JITで通信に使用するポート
 debugger.timeout_seconds = 300 タイムアウトまでの時間
を追加します。extensionやDebuggerはすでに存在しているかもしれないので、環境に合わせて追加、コメントでもしておいてください。
とりあえず、このPHPEclipseを使う以前にApacheからphpのプログラムが動くことを確認しておいてください。動かないときの切り分けが難しくなります。では、Eclipseの設定を行います。ウィンドウ>設定より、PHPeclipse Web Developmentのphpを選択します。するとapacheのパスと、Run PHP commandのパスの設定が出てきますので、設定します。またMySQLのパスも設定しておきます。インストールしているパスを設定しておきます。どうも初期設定は、wampp2の設定になっているみたいなので、変更しましょう。またphpの下のHelp(WIN32 *.chm format)にchmの設定するところがありますので、TIPSのHELPを参考にダウンロードして設定しておきます。次にその下にあるInstalled Interpretersを選択し、Addボタンを押し、phpのパスを設定します。最後にProject DefaultsにlocalostとDocumentRootを設定しておきます。
 http://localhost 
 c:\MyProject\php <-プロジェクトファイルがあるディレクトリ
では、デバックしてみましょう。デバックを開いて、PHP Applicationを選択し、新規ボタンを押します。そこにProject名とFileを指定し、Environmentタグを選択し、PHPを選びます。ではデバックボタンを押しましょう。うまくいけばデバックできます。


http://srvhat09.hp.infoseek.co.jp/index_php00.html

** PEAR
いろいろとつかえるライブラリが登録されています。
 pear install ライブラリ
でインストールできます。

** 圧縮
Pearに[Archive_Zip>http://pear.php.net/package/Archive_Zip/]というものがあるのですが、
 <?php
 require_once "Archive/Zip.php";
 $filearray[] = 'test1.jpg';
 $zipobj = new Archive_Zip('test.zip');
 if ($zipobj->create($filearray)) {
     echo 'Created successfully!';
 } else {
     echo 'Error in file creation';
 }
 ?>
テキストの圧縮はうまくいったんですが、jpgの圧縮がうまくいかない.. なぜだ...
** 印刷
phpで調べものをしているとhttp://www.pxdoc.com/という帳票ツールを見つけました。ちょっとよさそうです。まずダウンロードしてインストールを実行します。あとはsvgファイルを作ってpxdocで表示。すばらしい!

** ADOdb
データベースを扱う時のインターフェイスです。http://adodb.sourceforge.net/よりダウンロードしました。
 wget http://ovh.dl.sourceforge.net/sourceforge/adodb/adodb464.tgz
 tar xzvf adodb464.tgz
phpのinclude_pathにコピーしておきます。
 cp -R adodb/ /usr/local/lib/php/adodb

** Spreadsheet_Excel_Writer 
Excelファイルを作成してくれます。
あーーー はまったーーー~
mbstring.func_overloadが7になっていて、作成されるファイルすべて壊れているって
いわれていたんです...0にすればいけました。
[[Excel_Reviser>http://chazuke.com/?page_id=126]]ていうのもあります。~
読み込みは[[PHP-ExcelReader>http://sourceforge.net/projects/phpexcelreader/]]や
[[Excel_Peruser>http://chazuke.com/?page_id=127]]ていうのもあります。~
日本語が多いとだめなんですね。[[phpExcelReaderの日本語を含んだ場合の修正版>http://cha.sblo.jp/article/27457055.html]]
ありがとうございます!
** HTTP_Request
http://pear.php.net/package/HTTP_Requestよりダウンロード
 wget http://pear.php.net/get/HTTP_Request-1.2.4.tgz
 tar xzvf HTTP_Request-1.2.4.tgz
解凍したディレクトリをphp.iniのinclude_pathに追加するか、
 pear install HTTP_Request
httpd再起動後、
 <?php
 phpinfo();
 ?>
を実行して、include_pathを確認しておきます。またPEAR.phpも必要になりますので、
 /usr/local/lib/php
も追加しておきましょう。ちょっとサンプルを動かすと、エラー ん~  よく見るとHTTP_Requestは依存しているパッケージがありますね。
 Dependencies:
 PEAR Package: Net_URL 1.0.12 or newer
 PEAR Package: Net_Socket 1.0.2 or newer
ではインストールしておきましょう。 pear install <file>.tgzで
 require_once "HTTP/Request.php";
 $req =& new HTTP_Request("http://www.yahoo.co.jp/");
 if (!PEAR::isError($req->sendRequest())) {
    echo $req->getResponseBody();
 }

** Net_POP3
http://pear.php.net/package/Net_POP3よりダウンロード
 wget http://pear.php.net/get/Net_POP3-1.3.6.tgz
 tar xzvf Net_POP3-1.3.6.tgz
/usr/local/lib/php/NetにPOP3.phpをコピーするか
 pear install Net_POP3
Net_POP3_example.phpがサンプルです。

** SOAP
http://pear.php.net/package/SOAP/よりダウンロード
 wget http://pear.php.net/get/SOAP-0.8.1.tgz
 tar xzvf SOAP-0.8.1.tgz
依存しているパッケージがありますので、インストールしておきます。
 Dependencies:
 PEAR Package: Mail_Mime
 wget http://pear.php.net/get/Mail_Mime-1.3.0.tgz
 pear install Mail_Mime-1.3.0.tgz
 PEAR Package: HTTP_Request
 PEAR Package: Net_URL
 wget http://pear.php.net/get/Net_URL-1.0.14.tgz
 pear install Net_URL-1.0.14.tgz
 PEAR Package: Net_DIME
 wget http://pear.php.net/get/Net_DIME-0.3.tgz
 pear install Net_DIME-0.3.tgz

** Net_UserAgent_Mobile
携帯のキャリアを判別するためのライブラリです。pearはなんでもあるなー
http://pear.php.net/package/Net_UserAgent_Mobile/

** MIME
メールが文字化けするのをなんとかしたいなということで、~
[[Mail_Mime>http://pear.php.net/package/Mail_Mime/]]~
[[Mail_mimeDecode>http://pear.php.net/package/Mail_mimeDecode/]]~
参考:[[メールをパースするクラス>http://www.ecoop.net/memo/2006-05-09-1.html]]

**sqlite
PHPのバージョン5からは標準で組み込まれています。http://www.sqlite.org/
 pear install sqlite
でもいいですが、
 wget http://www.sqlite.org/sqlite-3.2.5.tar.gz
 tar xzvf sqlite-3.2.5.tar.gz
 cd sqlite-3.2.5
 ./configure
 make
 make install
エラーがでた... http://www.tcl.tk/から
 wget http://switch.dl.sourceforge.net/sourceforge/tcl/tcl8.4.11-src.tar.gz
 tar xzvf tcl8.4.11-src.tar.gz
 cd tcl8.4.11/unix
 ./configure --prefix=/usr/local
 make
 make install
もう一度sqlite-3.2.5でmake,make install
**NuSOAP
http://dietrich.ganx4.com/nusoap/index.php

**Puno
phpからOpenOfficeを触ってPDFってことで、
[[Puno>http://puno.sourceforge.net/]]

参考:[[PHPとOpenOfficeを連携「Puno」>http://www.moongift.jp/2007/09/puno/]]
** Xdebug
StackTraceが表示できるextensionです。http://www.xdebug.com/からxdebug 1.3.2をダウンロードしました。
 tar xzvf xdebug-1.3.2.tgz
 cd xdebug-1.3.2
 phpize
 ./configure --enable-xdebug
 make
 make install
/usr/local/lib/php/extensions/no-debug-non-zts-20020429にxdebug.soができました。
 cd /usr/local/lib
 ln -s /usr/local/lib/php/extensions/no-debug-non-zts-20020429/xdebug
.so xdebug.so <-extension_dirのところに
次にphp.iniを編集します。
 extension="xdebug.so"
 xdebug.dump.GET=*
 xdebug.dump.PUT=*
このxdebug.dump.GET=*はGETの値もみせてくれます。編集後、apacheを立ち上げなおします。
 <?php
 phpinfo();
 ?>
を実行して、xdebugが表示されていることを確認しましょう。されていなければ、php.iniのextension_dirを確認しましょう。ちょっと運用していたのですが、どうも調子が悪いです。2,3回に一回ぐらいページが表示できなかったりする現象が起きてます。ちょっと原因調査中....

** デバッグ
[[Eclipseプラグイン]]よりPDTをいれましょう。
** リモートデバッグ
http://dd.cron.ru/dbg/downloads.phpよりダウンロード
 wget http://switch.dl.sourceforge.net/sourceforge/dbg2/dbg-2.11.32-src.tar.gz
 tar xzvf dbg-2.11.32-src.tar.gz
 cd dbg-2.11.32
 which phpize //パスを確認
 emacs deferphpize //パスを認確 違ってれば直す
 ./deferphpize
 make install
php.iniを編集
 extension=dbg.so
 [Debugger]
 debugger.enabled = on
 debugger.profiler_enabled = on
 debugger.fail_silently = on
 debugger.ignore_nops = off
 debugger.JIT_enabled = on
 debugger.JIT_host = clienthost
 debugger.JIT_port = 7869
 debugger.JIT_level = 3
 debugger.timeout_seconds = 300
クライアントはhttp://uprising.s16.xrea.com/ishino16/index.htmlからPHP Simple Debuggerをダウンロードしてinstall.batでインストールしました。またdbglistnerをhttp://dd.cron.ru/dbg/downloads.phpからwindows版をダウンロードします。解凍して、register.bat、DbgListener.exeを実行します。タスクバーにいるDbgListenerのsetupを選択し、IDE COM classをPHP Simple Debuggerを選択してOKです。するとDbgListener.iniができてますので、codepage=28591に変更します。

これを組み込んでからPHPのPGが動かなくなりました。ちょっと調査中です..
なんともいえないのですが、php_acceleratorを入れており、php.iniの最後のほうに
 zend_extension="/usr/local/lib/phpA/php_accelerator_1.3.3r2.so
を記述していたのですが、これをコメントすると、とりあえず
 <?php
  phpinfo();
 ?>
でdbgが現れました。後プログラムも今のところは普通に動いております。もしかしてこれか?もしやPHPEclipseでリモートデバッグができるのかと思い、Eclipseの実行>デバッグからPHP Applicationで新規作成し、Fileタブより対象となるプロジェクトとファイルを選択します。次にArgumentsタグよりWorkingDirectoryでそのプロジェクトのディレクトリを設定しておきます。次にEnvironmentタブのRemoteDebugを有効にし、RemoteSourcepathにそのソールがあるパスを設定します。例:/webroot/test/ 下にMappedPathがあるので、
 local c:\webroot\test
 remote /webroot/test
と設定して、InterpreterでPHPを選択しましょう。ではデバッグボタンを押したいところですが、ソースに
 debugbreak();
を書いておいてから、ボタンを押します。
するとデバッグウィンドウにPHP Debugger at localhost:10001とかって出てましたら、ブラウザを起動します。
 http://localhost/test/hoge.php?DBGSESSID=1@clienthost:10001
とるすと、なんと!とまってくれるではありませんか!でも変数はどうやってみるんだろ?



http://www.trust-plus.jp/modules/mylinks/viewcat.php?cid=13~
http://tsuttayo.sytes.net/php/dbg/~
http://www.geocities.jp/maple4estry/eclipse_php.html~
http://hiromasa.zone.ne.jp/blog/?p=230~

** WinBinder
PHPでGUIが作れます。http://pecl.php.net/package-info.php?package=WinBinderもしくはhttp://hypervisual.com/winbinder/からダウンロードできます。インストールしたら、php_winbinder.dllをextensionsにコピーしてphp.iniのextension=php_winbinder.dllとしておきます。インストールされたディレクトリにCode\ToDo\todo.phpwがありますが、これはphp_sqlite.dllが必要になるので、実行する場合は、extensionsにコピーしておきましょう。では実行します。php.exeにパスが通っていることを確認して、
 cd C:\WinBinder\Code\ToDo
 php todo.phpw

http://itpro.nikkeibp.co.jp/members/ITPro/oss/20041110/152408/

** PHPEdit
http://www.waterproof.fr/からダウンロードしました。デバッグできそうなんですが、どうでしょうか。
ライセンスファイルはhttp://www.waterproof.fr/MyAccount.phpからダウンロードしました。ん~日本語が表示できん...

** Image_Graph
グラフを出力できるのですが、これが多彩!まだ試してないですが、参考にしてみましょう。~
http://pear.veggerby.dk/samples/

Open Flash Chartってなものもあるので、どちらを使うか悩むところですね。
http://teethgrinder.co.uk/open-flash-chart/

** セキュリティ
-register_globals~
http://www.sound-uz.jp/php/tips/security.htmlを一読しておきましょう。register_globals = Offに!
-safe_mode~
http://www.php.net/manual/ja/features.safe-mode.php~
httpd.confから変更する場合は、
 php_admin_flag safe_mode on
-open_basedir~
php.ini
 open_basedir "/web"
もしくはhttp.conf
 php_admin_value open_basedir "/web"
としておくとオープンされうるファイルを/webで始まるディレクトリに制限します。
このディレクトリだけとする場合は、"/web/"とします。複数の場合は"/web/:/web2/" windowsは;
-safe_mode_include_dir~
このディレクトリ(そのサブディレクトリも含む)の配下のファイルが インクルードされる場合、UID/GID  のチェックはバイパスされます。
 safe_mode_include_dir = /hoge
-disable_functions~
php.iniで特定の関数を無効にできます。
-ファイルアップロード時のテンポラリ
php.iniでupload_tmp_dirを指定する
 upload_tmp_dir = /tmp
-safe_mode_exec_dir~
php.iniでsafe_mode_exec_dir = /hoge/
とするとセーフモードの場合、このディレクトリ以外で実行することはできなくなります。
 exec("test.sh");
とするとこのtest.shを/hogeにおいておくと実行できます。
-Suhosin~
[[PHPの「守護神」Suhosin>http://itpro.nikkeibp.co.jp/article/COLUMN/20070214/261900/?ST=win]]


http://www.asahi-net.or.jp/~wv7y-kmr/memo/php_security.html

** TIPS
*** HELP
http://www.php.net/download-docs.phpから好きな言語のヘルプをダウンロードします。
-セッションの保存場所を変えたい~
.htaccessに
 php_value session.save_path "/public_html/tmp/"
この設定はphp.iniでも当然可能です。またフラグの場合は、
 php_flag session.auto_start 0
といったように記述します。
*** Fatal error: Allowed memory size とでる。
php.iniのスクリプトが確保できる最大メモリを増やします。
 memory_limit = 16M

*** Character set '#13' is not a compiled character set and is not specified in the 'NONEXISTENT/charsets/Index' file
web上では出ないのですが、なぜかターミナルで実行するとこのエラーがでます。かといってプログラムは動いています。これはmysqlがらみで、出ているようです。~
http://ns1.php.gr.jp/pipermail/php-users/2003-October/019256.html~
http://www.mysql.gr.jp/mysqlml/mysql/msg/4852~
*** IMAPが動かない
 Call to undefined function:  imap_open()
とエラーが表示される場合は、UW IMAPが必要になり、configureで--with-imapを指定しておく必要があります。Cannot find rfc822.hとエラーが出る場合がありますので、
ftp://ftp.cac.washington.edu/imap/からc-client.tar.Zをダウンロードして、
 tar xzvf c-client.tar.Z
 cd imap-2004f
 make lrh
 cd c-client
 cp c-client.a /usr/local/lib/libc-client.a
 cp *.h /usr/local/include
 cd ..
 cd src/c-client
 cp *.* /usr/local/include
http://search.net-newbie.com/php/ref.imap.htmlを参考にしてみましょう。
*** pearでDidn't receive 200 OK from remote server...
さていままでpearでインストールできていたのにエラーがでるようになりました。
[[PEARで HTTP error, got response: HTTP/1.1 404 Not Found...と表示されるときの対処方法>http://sf51.blog42.fc2.com/blog-entry-1.html]]を参考に
 wget http://pear.php.net/go-pear
 php go-pear
でインストールできるようなんですが、
 FATAL ERROR! We cannot initialize
どうもアクセスできん!みたいなことをいっているんですが、パーミッションを確認しても大丈夫。ってことは、php.iniか?open_basedirに設定しているのを
一時的にコメントすると動きました。

** リンク
- [[PHP PG]]~
- [[PHP インストール>http://www.dolphy.gr.jp/webap/env/php-install.html]]
- http://php.s3.to/man/
- [[PHPのインストール(Apache2.0 Linux編)>http://acorn.zive.net/~oyaji/www/apache_linux_php.htm]]
http://dd.cron.ru/dbg/downloads.php~
-[[Apache+MySQL+PHP+GDインストール手順>http://eszs.itbdns.com/eszs.html]]~
-[[文字コード>http://tsuttayo.sytes.net/php/char_trn/]]~
-[[マルチバイト文字列関数(mbstring)>http://php.s3.to/man/ref.mbstring.html]]~
-[[HTTP_Request>http://pear.php.net/manual/ja/package.http.http-request.php]]~
-[[WEBページをGETしよう!>http://php.s3.to/tt/tt6.php]]~
-[[ネットツール>http://php.s3.to/net/]]Net系のサンプルがあります。~
-[[PHPプログラミング>http://hp.vector.co.jp/authors/VA035840/index.htm]]~
開発ツールの紹介等いろいろと参考になります。
-[[PEARマニュアル>http://pear.php.net/manual/ja/]]~
-[[mailサンプル>http://www.softinn.jp/doc/lib/readmail.phps]]~
-[[HTTP出力コードの指定>http://miyata.z1.bbzone.net/PHP/mb_string/main.htm]]~
-[[PHPエディタ - フリーのwindows用php統合開発環境 - phpspot>http://phpspot.net/php/phpeditor.html]] いろいろと紹介があります~
-[[PHPは100台近く,MySQLは1億レコードのDBで使用---楽天 開発推進部長 安武弘晃氏に聞く>http://itpro.nikkeibp.co.jp/members/SI/oss/20031007/1/]]~
[[【PHPウォッチ】第18回 PHP誕生10周年,PHP 5.1とPHP 4.4が登場>http://itpro.nikkeibp.co.jp/members/ITPro/oss/20050629/163631/]]~
[[PHPスクリプト1つでできる簡単サーバ監視>http://blog.asial.co.jp/486]]~

** 参考書籍
-[[PHP徹底攻略>http://www.amazon.co.jp/exec/obidos/ASIN/4797308656/worried-22]]
-[[PHP実践のツボ セキュアプログラミング編>http://www.amazon.co.jp/exec/obidos/ASIN/4861670012/worried-22]]
** コメント
--#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS