PHP

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

環境設定

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からデバッガをダウンロードする。 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 --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というのもありますが、先に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をインストールしてみましょう。ダウンロードして、解凍して、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)は、開発が活発なので、今度試してみます。

参考:PHPアクセラレータで一番高速なのはどれか?
PHP:eAccelerator で PHP 高速化

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ていうのもあります。
読み込みはPHP-ExcelReaderExcel_Peruserていうのもあります。
日本語が多いとだめなんですね。phpExcelReaderの日本語を含んだ場合の修正版 ありがとうございます!

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
Mail_mimeDecode
参考:メールをパースするクラス

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

参考:PHPとOpenOfficeを連携「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://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...と表示されるときの対処方法を参考に

wget http://pear.php.net/go-pear
php go-pear

でインストールできるようなんですが、

FATAL ERROR! We cannot initialize

どうもアクセスできん!みたいなことをいっているんですが、パーミッションを確認しても大丈夫。ってことは、php.iniか?open_basedirに設定しているのを 一時的にコメントすると動きました。

リンク

参考書籍

コメント

  • #comment

トップ   編集 凍結解除 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 単語検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2010-01-28 (木) 09:23:00 (5203d)