php

php プログラムがメモリリークしているかチェックする方法

vmstatのfreeを見れば良い。メモリリークしていればfreeがどんどん減っていく。(目的以外のプログラムが動いていないか(cronとかで)注意。) [root]# vmstat 1 procs -----------memory---------- ---swap-- -----io---- --system-- -----cpu----- r b swpd f…

php simple html dom parser でエラーというかパースというか解析というかが正常に出来なかった件

php

htmlも問題無いのに何故か特定のタグが取得出来ない現象が発生。 突き詰めた結果、特定の文字列を含む場合に発生することが分かった。 結局は文字コードが原因だったってわけ。またお前か! 取得した結果をutf8に変換したところ問題無く取得できた。

php5.2 mb_send_mailを使うと半角カナが文字化けする

php

mb_send_mailって便利だけどその辺注意する事

php5.3.3 centos6.8 composerインストール手順

インストール curl -sS https://getcomposer.org/installer | phpcomposer.pharが出来るので移動 mv composer.phar /usr/local/bin/composercomposer.jsonを作成する cd /usr/local/bin vi composer.json内容 { "require": { "monolog/monolog": ">=1.0.0" }…

php csrf対策

php

参考サイト PHPでクロスサイトリクエストフォージェリ(CSRF)対策するときのメモ - Qiitaphp

php sqlのIN句をarray_fillでキレイにまとめる

以下のようにすれば一行で$idの数だけ?を記述するin句が作れる i.id in ('. implode(',', array_fill(0, count($id), '?')). ')str_repeatを使う方法もあるようだけどこっちの方がキレイ

php 例外時のデバッグは__toStringが便利

php

__toString実行しておけばエラーの呼び元とか行数とか出してくれるので便利サンプル log($e->__toString()); }

php fatalエラーの補足方法

バッチがメモリ不足等で落ちた場合にFatalエラーが発生するけど通常fatalエラーはtry-catchはおろか、set_error_handlerでも補足できない。 そのためregister_shutdown_functionを使う必要がある。

mysql5.6が突然起動しなくなった件の原因と対策

昨日まで動いてたmysqlが突然起動できなくなった。以下、ログ周りのオプションを変更してみた時のエラーログまとめ # error1 /usr/sbin/mysqld: File './mysql-bin.000023' not found (Errcode: 28 - No space left on device) 2016-09-14 08:52:37 23762 [E…

メールの符号化について

受信したメールをprocmail経由でphpに渡してゴニョゴニョする時に失敗した件のまとめ。まずメール送信の仕組みから分かっていなかった。初期のメールではASCIIの7bitデータのみが想定されていたため、現在でも添付のバイナリやマルチバイトである日本語は7bi…

php5.1 と php5.2 のstrtotimeの違いについて

php

php Call to undefined method PEAR_Error::xxx() エラーについて

php

addWorksheet(mb_convert_encoding($sheet_name, 'sjis-win', 'utf8')); $worksheet->write(0, 0, mb_convert_encoding('test', 'sjis-win', 'utf8')); Spreadsheet_Excel_Writerで上記を実行したところ、以下のエラーが発生。 Fatal error: Call to undefin…

php pear Spreadsheet_Excel_Writerのエラーの対処方法

php

エクセルのバージョンは2013。使う前から想定はしていたけど案の定Spreadsheet_Excel_Writerでエラーが発生。 しかも通常は問題無いんだけど、ある一定以上のデータを出力しようとすると「一部の内容に問題が見つかりました」云々のエラーが出る。以下のサイ…

php 連想配列の先頭にデータを追加したい

php

[ PHP ] 配列の先頭に要素を追加 ( array_unshift, array_merge, + ) – 行け!偏差値40プログラマーこちらのサイトが参考になる。キーを保持したい場合は、基本array_mergeを使うことになると思うけど、それでもうまくいかない場合は、array_reverseを使えば…

php 同一nameのフォームをpostした場合、後に書いたものが優先される

php

ケース1 <form method="post" action="/test.php"> <input type="hidden" value="hidden" name="col1" /> <input type="text" value="" name="col1" /> <input type="submit" value="send" /> </form> テキストボックスに「text」と入力してpostした時のprint_rの結果、テキストボックスが優先される Array ( [col1] => text )ケース2(textbox…

centos5.11 php5.2 vim7.4 xdebug2.2.7 debugger.vimインストール手順

phpのデバッグ環境作りたくて最初vdebugを入れようとしたんだけど自分の環境だとどーにもpythonのバージョンの関係で動かなかったため結局debugger.vimをインストールした。(もしかするとpython2.6がデフォルトのcentos6以降じゃないとダメなのかもしんない)…

サブドメインでのセッションの共有方法

php

http://www1.test.com/test1.php http://www2.test.com/test2.php というサブドメインが異なる二つのページ間でセッションを共有したい場合、以下のようにsession_startする前にsession.cookie_domainを設定する必要がある。

php php.iniの設定はhttpd.confやhtaccessでも設定可能

php

はまってしまったのでメモ。 php.iniのinclude_pathはデフォルトのままなのに何故か別フォルダのファイルをincludeしていたからなぜだろうと思ったら、htaccessにinclude_pathが設定されていた。 php_value include_path ".:/var/lib/sample:"htaccessを使う…

php definedで配列を定義したい

php

php7だとdefinedに配列を指定できるようになったらしいがphp5.2ではできないので以下のようにすればよい。(もちろん区切り文字がデータに含まれないことが前提)

php array_multisortが優秀だった件

php

cakephp使ってて、以下のような多次元配列をNumber.numberでソートしたい [User] => Array ( [0] => Array ( [id] => 36 [Number] => Array ( [id] => 1044 [number] => 0300019992 ) ) [1] => Array ( [id] => 15 [Number] => Array ( [id] => 1041 [number…

php セッションの有効期限を2038年以上にするとセッションクッキーになってしまう件

cakephp1.2でSecurity.level=lowにした上でsession_startすると、本来であれば有効期限が25年先となるはずが、有効期限がセットされずにセッションクッキーになってしまうという問題にぶち当たった。しかもphp5.1だと発生し、php5.2だと発生しない。色々試し…

php 1つのformにsubmitボタンを複数設置する方法

php

わざわざjavascriptを使ってあほなことをやっていた。 submitのデータは押したものしか送信されない。(PHP)HTMLのFORMでSubmitボタンを複数配置したい場合 : 3流プログラマのメモ書き formに複数ボタンのサンプル(同じname属性値)

phpからcurlを使う

php

wgetを使っていたらファイルが破損するケース(と思ったら勘違いだったぽい)があったため、今後はcurlを使うようにすること。以下、ファイルダウンロードのメモ。 /dev/null 2>&1"; passthru($cmd, $ret); オプション -o ダウンロード時のファイルを指定 -k …

php FPDFのPGOTHICとGOTHICの横幅の違いについて

php

PGOTHICは半角の文字によって横幅が異なるっぽい。 例えば「1」と「W」では「W」の幅の方が広い。 GOTHICだとどちらも同じっぽいので、バイト長で折り返しする際は、GOTHICを使うこと。

php 日本語に対してstrlenを使う際は必ずsjisに変換して2バイトにしてから使うこと

php

utf8だと3バイトだったり2バイトだったりするので気をつける 変換については↓ utf8の日本語を2バイトにしたければshift_jisに変換すればよい - 技術ブログ

php 名前空間について

php

jQuery File Upload Pluginを実行したらこんなワーニングが出た。 PHP Warning: Unexpected character in input: '\\' (ASCII=92) state=1どうやら以下の行でエラーになっていたらしい。

phpizeを使ってphpの再コンパイルをすることなくmysqliを追加する

php

mysqliを使ったソースをサーバー上で動かそうとしたときに以下のエラーが出た Fatal error: Class 'mysqli' not found in /var/www/login.php on line 101 mysqliが使えるかどうかはphp -mで確認する。 php -mmysqliを使う場合、本来phpをコンパイルする際に…

cakephp1.2 php5.3 Deprecatedエラーを消したい

php.iniに以下のようにすれば通常はdeprecatedエラーは非表示となる error_reporting = E_ALL & ~E_DEPRECATEDしかしcakephp1.2では個別にerror_reportingが設定されている箇所が何か所かあるようで、↑の設定をしてもdeprecatedエラーが表示されてしまうため…

php メールのタイトルが途中で切れてしまう件

php

変更前

php file_put_contensが便利だった件

php

open~closeまで全部やってくれる関数。 ファイルにさっとログ吐きたい時とかいっつもこの手順を忘れるんだけど、file_put_contentsで一発でできるぽかった。参考サイト 【PHP】超絶便利関数、file_put_contents()の動作を理解する。追記はFILE_APPENDをつけ…