Nacky - Snowland.net
Nacky(Issei Ishii)がDJ/Composerのようなふりして書き散らすblogサイト
Info
- DJブースレンタルデー 2010-03-17(Wed) 17:00-23:00 @ club mogra(秋葉原)
- 箱庭4丁目 2010-03-21(Sat) 14:00-19:00 @ sabaco(早稲田)
- スーパーラウンジタイム 2010-03-24(Wed) 19:00-22:30 @ sabaco(早稲田)
- 新作発表会 平成22年3月度 2010-03-25(Thu) 20:00-23:00 @sabaco(早稲田)
- Google CalendarにEvent Schedule (Issei Ishii/Nacky) を公開中>feed
- IRC(wide系) #snowland
- DJブッキングはいつでも受付中! nacky(at)snowland.net までメールください.
Jump to navigation
2010-03-08
CentOS5.4でのPHPはまだ5.1系なので,5.2系以降対応になっているjson関数(json_decode等)が使えません.
がんばってPHPを5.2に上げるという手もありますが,それは一苦労.
しかしマニュアルにある通りPECLでリリースされているので,追加してやれば使えます.
(むしろPECLであったものが5.2で標準になった)
# pecl install json
# echo 'extension=json.so' > /etc/php.d/json.ini
# service httpd restart
phpinfoでpeclを確認.問題なく動きました.
2010-02-12
PHPで$_SERVERを参照するとサーバ環境変数が取得できます.
このうち $_SERVER['HTTP_HOST'] と $_SERVER['SERVER_NAME'] は似て非なるものです.
HTTP_HOSTは,クライアントがリクエストヘッダ中でサーバに送ってくる Host ヘッダ.
SERVER_NAMEは,サーバ側が持ってる名前(VirtualHostのときはその名前).
大体の場合両者は一致するのですが,EZweb端末でSSL上のリクエストを行うと,HTTP_HOSTの末尾にポート番号が付きます.
https://example.com/ とすると
$_SERVER['HTTP_HOST']は example.com:443
$_SERVER['SERVER_NAME']は example.com
なんですな.
いずれにしろHTTP_HOSTのほうはブラウザが任意で送ってくるものなのでアテにしちゃいけません.
逆に443がほしければ $_SERVER['SERVER_PORT'] で取得できます.
■
PHP: $_SERVER - Manual
2010-01-27
PHPのGD関数だとimagecreatefromjpegとかでサクサクとjpegファイルを読み込めてとても便利なんですが,Windows BMPとtiffには対応していません.
Windows BMPに関してはDHKoldさんのimagecreatefrombmp関数(自力でbmpを読む)がありますのでありがたく使わせていただきます.
■
PHP: imagecreate - Manual #53879
じゃあtiffはどうするか.これがまた全然情報がない.
仕方ないのでとりあえずはtiff2pngという外部のプログラムを使うことにします.
■
tiff2png Home Page
■
PNG 利用術
Linux x86/glibc のバイナリがあるのでそちらをDL.
$ tiff2png -destdir <書き出し先> <tiffファイル>
動作確認.
あとはtmpnameなりを使ってテンポラリファイルを確保して,system()関数あたりで呼び出してやればOK.
# tiff2pngは-destdirを指定しないとカレントに書き出そうとするようで,パーミッション問題でややハマり.
追記
tiff2pngは拡張子.tiffや.tifだとリネームして.pngになってくれますが,tmpnameとかでテンポラリファイルとして拡張子なしのものを食わせると,後ろに.pngを追加したファイル名にしてくれます.
例
hogehoge.tif → hogehoge.png
hogehogetmp → hogehogetmp.png
2009-12-16
「これって出力をリダイレクトしてますけど,複数プロセス走ったらどうなるんですか?」
試せばいいじゃないか…
test1.php
<?php echo 'A'; sleep(10); echo 'B';
test2.php
<?php echo 'C'; sleep(10); echo 'D';
で,実行.
$ php test1.php > log &
[1] xxxx
$ php test2.php > log &
[2] xxxx
$ cat log
C
[1]- Done php test1.php > log
[2]+ Done php test2.php > log
$ cat log
CD
$ php test1.php >> log &
[1] xxxx
$ php test2.php >> log &
[2] xxxx
$ cat log
AB
[1]- Done php test1.php >> log &
[2]+ Done php test2.php >> log &
$ cat log
ACBD
…みたいな話,やらないで通った人はやらないまんまなんだろうなぁ.
※phpで書いてるのはそういうシチュエーションだったからです
※CentOS5上での話.処理系によって異なる?まぁ試せばいいじゃないか…
2009-12-07
PHPで携帯用サイトを作る際に,セッション情報を持たせるためにuse_trans_sidを設定し,URLの末尾にPHPSESSID=xxxxxx... という文字列をつけさせる処理はよく行われます.
しかしXHTMLで書いた携帯サイトをFireFoxで見たらXMLエラーが!
ソースを見てみると,GETパラメータの後に自動で付加される PHPSESSID が &PHPSESSID となっている.
本来だったら文字実体参照で &PHPSESSID となってほしい.
.htaccessに
php_value arg_separator.output '&'
と書いて解決.
もちろん
ini_set('arg_separator.output','&');
としても良い,はず.