php

PHPからTCP経由で外部のDBにアクセスできない場合

iptable や、DB側の接続制限がどこもおかしくなく 直接コンソールからのDBへ接続できる場合 ApacheからのDB接続をSELinuxが制限している場合があります。SELinuxの詳しい説明は割愛します。解除方法は以下 setsebool -P httpd_can_network_connect_db 1

Web製作でよく使うPHP変数の値有無判定関数

PHP

/** * * @param mixed $v * @return boolean * **/ function v($v){ if(is_bool($v)){ return $v; }elseif(is_numeric($v)){ // all numeric (0 and '0') are true. return true; }elseif(is_string($v)){ return !empty($v); }elseif(is_array($v)){ $v = a…

PHPのStringのゼロに注意

PHP

$a = 0; if(empty($a)){ echo 'TRUE'; }else{ echo 'FALSE'; } これが、TRUEになることは容易にわかるのですが $a='0'; if(empty($a)){ echo 'TRUE'; }else{ echo 'FALSE'; } これも、TRUEになるとは盲点でした。恐るべしPHP

|| をつかって変数を初期化

PHP

値の不明な変数を初期化する場合 if($a){ $a = 'hogehoge'; }もしくは $a = $a ? $a : 'hogehoge';これを以下のように書きます。 $a || $a = 'hogehoge'; は、if文の条件式にしか普段は使わないのだけれども 編集の初期化処理などに使うと1行で簡潔にかけて…

月、日の桁数をそろえたい時にsubstrの便利な使い方

PHP

月とかカレンダーの日をfor文でまとめて出力するときに 以下のように書くことがあるかと思います。 for($i=1;$i<=12;$i++){ echo $i.'月<br>'; } ================= 1月 2月 3月 4月 5月 6月 7月 8月 9月 10月 11月 12月 ただ、これだとレイアウト的に1桁の月と2…

PECLでSQLiteをインストールできないとき

PHP

こちらで紹介されているように、途中エラーで止まってしまう場合の対処 http://blog.plastik.jp/archives/44上記内容の中で、「ソースを直接編集」の部分がどのファイルを編集するべきか すぐにがわからなかったのでメモ > sqlite.c を直接編集 vi sqlite.c …

fgetcsv で文字化けする場合

PHP

fgetcsv の仕様が、PHP4 -> PHP5 で変わったらしくLocale に依存するらしい。 日本語が文字化けする場合は、以下のように明示的にLocaleを変更する setlocale(LC_ALL,'ja_JP');fgetcsv 実行前に上記を書けばOK。

PHPでグラデーション画像を作成する

PHP GDは、image関数を使って画像のサイズをリサイズする時によく利用します。 サンプルもググルとたくさんあるので使ってる方も多いかと思います。 いろいろな用途に使われているGDですが、意外とグラデーションをかけた画像を GDで作成してるサンプルが無…

OpenIDでmixi id を利用する時には証明書が2つ必要

サンプルにしたがって、mixi OpenIDのサンプルコードを動かしてみた時の備忘録 インストール方法などは以下の参考サイトを参照参考:http://d.hatena.ne.jp/botchy/20080820/1219255653 mixi 証明書の取得は、以下の2つ必要 https://mixi.jp https://id.mixi…

PHPで、先月、翌月などを扱うときの注意

※ かなり初歩的な話ですのでご了承ください PHPで、先月、翌月の月を取得するような場合、以下のようなプログラムを書いてしまいませんか? echo '先月 => '. date('m', strtotime('-1 month')) .'<br>'; echo '今月 => '. date('m') .'<br>'; echo '翌月 => '. date…

PHPで、先月、翌月などを扱うときの注意

※ かなり初歩的な話ですのでご了承ください PHPで、先月、翌月の月を取得するような場合、以下のようなプログラムを書いてしまいませんか? echo '先月 => '. date('m', strtotime('-1 month')) .'<br>'; echo '今月 => '. date('m') .'<br>'; echo '翌月 => '. date…

PHPからRsyncを実行する時にはまったこと

PHPの exec , system 関数を使って、直接コマンドを実行することができます。 これをうまく使えば、PHP単体では実現しにくいことを 他のアプリと連携して実行することができます。そんなわけで、ためしにWebのインターフェイスからボタンを押すと サーバ上の…

バックエンドサーバでも、リモートIPアドレスを取得する

PHP

気がつけば、2ヶ月近く日記を書いてなかった。。。。 $ip = $_SERVER['HTTP_X_FORWARDED_FOR'] ? $_SERVER['HTTP_X_FORWARDED_FOR'] : $_SERVER['REMOTE_ADDR'] ; mod_proxy とかを使って、バックエンドでPHPを実行しているときとかに クライアントの接続元I…

携帯サイトで利用するJPG

携帯サイトで、JPG画像を利用して表示できない場合は、Content-Type を確認してみるとよい。 ○ Content-Type: image/jpeg × Content-Type: image/jpgサーバ出力で画像を生成している場合などで、 image/jpg とするようなことは結構ある気がします。。。 私の…

PHPの最適化 12 PHP Optimization tips

PHP

(元ネタ http://www.ilia.ws/files/zend_performance.pdf) staticが使えるなら、staticを使う。速度は4倍になる。 __get, __set, __autoload は避ける。 require_once() はコストがかかる。 include や require では絶対パスで指定する。 スクリプトの開始時…

月末の日付を取得する

PHP

3月末の日付を取得したい場合 date("Y/m/d", strtotime("2008/4/1 -1 day")); date("Y/m/d", mktime(0,0,0,4,0,2008)); どちらも、次月 2008年4月1日の1日前と考えれば取得できますね。

PHPの日付の加算、減算の備忘録

PHP

// 現在日付から○日の取得 echo "1日前" . date("Y/m/d", strtotime("-1 day" )); echo "1ヶ月前" . date("Y/m/d", strtotime("-1 month")); echo "1年前" . date("Y/m/d", strtotime("-1 year" )); echo "1週間前" . date("Y/m/d", strtotime("-1 week" ));…

スクラップブックマーク

はてなブックマークのjavascriptをお気に入りに登録させてしまう仕様をみて ほーそんなこともできるんですね。 灯台下暗しといいますか、クリック一発で登録の手軽さをこういった形で実現してしまうとはさすがです。そこで、新発見があったのですから応用し…