* [[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