PHP

php のセッションにmemcached を使う

CentOSの場合 install rpmforgeのレポジトリが入っていない人は以下の手順で追加 # wget http://dag.wieers.com/packages/rpmforge-release/rpmforge-release-0.3.6-1.el5.rf.i386.rpm # rpm -Uhv rpmforge-release-0.3.6-1.el5.rf.i386.rpm# yum install li…

PDO で1MB以上のカラムを取得できない場合

PHP

PDOでMySQLのLONGBLOBカラムの値を取得しようとしたら、綺麗に1MBのところで切れる。いろいろ検索すると、http://bugs.php.net/bug.php?id=36345&edit=1 や、http://bugs.php.net/bug.php?id=38015 が見つかった。 PDO::MYSQL_ATTR_MAX_BUFFER_SIZE がデフ…

mod_phpが使用する php.ini のパスを設定する方法

PHP

httpd.conf の中で以下のように設定できる。グローバルに設定されるので、VirtualHost等では使えない。 PHPIniDir /usr/local/etc/php.ini

CentOS5.1 上のPHPでCGIを書く

PHP

phpコマンドには、CLIバージョンとCGIバージョンが存在していることを発見した。 何てわかりにくい言語なんだろう、phpは。 ということで、CentOS5.1にデフォルトでついてくるphpでCGIを書く場合にはまった点をメモ。/etc/php.ini を以下のように変更する。 …

phpのユニットテスト(PHPUnit)とデバッグ環境(xdebug)

PHP

最近PHPをまた使っている。PHPUnitのバージョンがかなりアップされていたので再度メモ。あと、エラー発生時にスタックトレースと変数の表示などをしてくれる xdebug も格段に簡単に入るようになっていたのでメモ。 インストール # yum install php-pear # pe…

PEAR::HTTP_Download がなかなか良い

PHP

WEBアプリでファイルのダウンロード機能を持たせたいときに、MIMEヘッダをブラウザ毎に調べて微調整するのが非常に面倒くさい。 ブラウザ毎の違いで実装を微調整するのは技術的にあまり面白く無い。でもこの退屈な作業はライブラリが吸収してくれないかなと…

PEAR のインストール

PHP

以下のようにインストール。 # wget -O go-pear.php http://pear.php.net/go-pear # php go-pear.php Content-type: text/html X-Powered-By: PHP/4.3.8 Welcome to go-pear! Go-pear will install the 'pear' command and all the files needed by it. This…

PHPの1行スクリプト

PHP

perl の場合は perl -e 'print "hello world";'php の場合は php -r 'echo "hello world";'設定を変えて実行したい場合は、 php -d safe_mode=0 -r 'echo "hello world";'

Mingインストールメモ

PHP

PHP、Ruby、CなどからFlashのswfファイルを生成できるMingのインストールメモ。http://ming.sourceforge.net/からソースをダウンロードして、 ./configure make make installでも、php_ext がない。でもming-0.4.0beta3の方にはあるのでそちらを利用する。ph…

JpGraph のインストール

rpmfind.net で、JpGraphを検索したがCentOS用のRPMパッケージはみつからなかったので、FC6用のもので妥協。 wget ftp://rpmfind.net/linux/fedora/extras/development/i386/jpgraph-2.1.2-2.fc6.noarch.rpm rpm -ivh jpgraph-2.1.2-2.fc6.noarch.rpmフォン…

CentOS 4 でSymfony

php5を入れた後で、以下のコマンドでOK pear install symfony/symfony

CentOS 4 でPHP5

yum upgrade php --enablerepo=centosplusこれだと、GDが使えないので、以下も実行 yum --enablerepo=centosplus install php-gd

WEBアプリケーション速さ比較

C言語にはClearSilverというテンプレートエンジンがあるらしい。 WEBアプリはApacheモジュールで作れば一番速そうだけど、テンプレートエンジン使うとどうなのかなと思いテストしてみた。 結論 Resinが断トツで速かった。Apacheモジュール+ClearSilverより…

domxml_open_file の注意

PHP

なぜか、domxml_open_file( $filename ) が失敗する。 Warning: domxml_open_file(): I/O in util.php on line 26のようなエラーが出る。仕方が無いので、以下の方法で解決 $dom = domxml_open_mem( file_get_contents( "$filename" ) );

PEARのアップグレード

PHP

PEARモジュールのインストール時に、 package version2.0 に対応していないよというエラーが出てしまった。そこで、PEARのアップグレードをすることになった。 # pear upgrade PEARしたところ、 Notice: Undefined index: st in RPC.php on line 292 downloa…

PHPからImageMagick (PECL::Imagick)を使う:インストールメモ

PHP

※要 php-devel、ImageMagick、ImageMagick-devel も必要。imagick-0.9.11.tgz を http://pecl.php.net/package/imagick からダウンロードする。 # cd /usr/include/php/ext/ # tar zxvf imagick-0.9.11.tgz # cd /usr/include/php/ext/imagick-0.9.11 # phpi…

mcrypt のインストール メモ

PHP

libmcryptのインストール http://sourceforge.net/projects/mcrypt から libmcrypt-2.5.7.tar.gz をダウンロードする。 # tar zxvf libmcrypt-2.5.7.tar.gz # cd libmcrypt-2.5.7 # ./configure # make # make install ビルド手順 php のソース(php-4.3.8.t…

IEでhttps使用時にファイルのダウンロードができない場合の対処方法

PHP

PHPのプログラムから動的にファイルを生成してダウンロードさせる場合に、HTTPヘッダーのキャッシュの設定をゆるくする必要がある。 http://support.microsoft.com/kb/812935/ja この問題は、以下のいずれかの状況に該当する場合に発生します。 ・[暗号化さ…

PHP mailコマンドのデバッグ方法

PHP

参照URL http://wiki.poyo.jp/read/PHP/tips/mail/function_mail echo '' | php -d sendmail_path="cat -"

pear::Mail::mimeDecode で、multipart/mixed のメールで、「boundary」の終わりがない場合に最後のパートが消えてしまう問題の回避方法。

PHP

オリジナルのソース: mimeDecode.php $tmp = explode('--' . $boundary, $input); for ($i = 1; $i < count($tmp) - 1; $i++) { $parts[] = $tmp[$i]; }変更後のソース: mimeDecode.php $tmp = explode('--' . $boundary, $input); if( count($tmp) == 2 ) $…

IIS上でPHPを動かす

PHP

phpをダウンロードして解凍する。 php というフォルダの中に解凍して、InetPub/Scripts/php に置く。 別の場所でも良いが、アクセス権をゆるくしておかないと、ユーザ名とパスワードを聞かれることがあるので注意。 WWWサーバーのプロパティで、「Home Direc…

10分以上アクセスのないセッションを削除する

PHP

cron に以下を設定する。 5,15,25,35,45,55 * * * * cd /var/lib/php/session/; find -amin +10 -exec rm -f {} \;find のexec は、「;」で終わる必要あり。 find の「{}」には、find でマッチしたファイル名が入る。 shellが、; を理解できるように、「\;」…

PHPの拡張モジュールを後から追加する方法

PHP

例: domxmlを追加する場合 phpのソースをダウンロードして解凍する。(例: php-4.3.8.tar.gz ) tar zxvf php-4.3.8.tar.gz cd php-4.3.8/ext/domxml phpize ./configure --with-zlib-dir=/usr/lib make make installすると、 domxml.so が/usr/lib/php/exte…

mysql_pconnect と mysql_connect の比較

テストコード mysqltest.php 上記のスクリプトを、ab -n 10 http://localhost/mysqltest.phpmysql_pconnectだと、1,2回(リクエスト数が増えると、少し増える。)しかMySQLにコネクトせず、その…

メール関連メモ

PHP

PEAR Mailだと、MTAに引数渡せない。 PEAR Mail_mail を使えば、MTAに引数を渡せる。