【PHP】「Fatal error Unsupported operand types in」エラー。

変数の型が違う物同士を演算しようとすると出る。

【PHP】PHP5.6でdie();を連続して記述するとサーバーからのレスポンスが帰ってこない。

なんで?

これは帰ってくる。というか普通にダンプ内容が表示される。

これはデータを受信していません、になる。 Chromeで言うとエラーコードERR_EMPTY_RESPONSEになる。

仕様なのか、、、??

追記:

die();の問題じゃないっぽい。
どうやらクラス内定数周りが絡むとこうなることが多い気がする。

要調査。

【CentOS】makeコマンドで「/usr/bin/ld: cannot find」と表示されたら。

makeコマンドを実行した際に「/usr/bin/ld: cannot find …」と怒られるのは、その後の「-l」以降に続く文字列名のライブラリが不足していることが原因。

例えば

と表示されていたら、ltdlという名前のパッケージが足りていないということ。

焦らずにyum search ltdlとでも入力し、ひっかかったライブラリをインストールしてやればOK。

【CentOS/PHP】phpenvを道入して複数バージョンのPHPを管理する。

phpenv

複数バージョンのPHPを管理するツール。PHPのバージョンをフォルダごとに分けたりとかが出来る。

インストール

下記コマンドを順番に実行。

ここまできたらphpenvコマンドが有効になる。

PHPをインストール

下記コマンドでインストール可能なPHPのバージョンを確認。

こんな感じでリスト表示されるので、この中から使いたいバージョンを決める。
んで例えば5.3.29をインストールしたい場合は下記の通り。

PHPインストール(コンパイル)時のオプションは下記ファイルに記載されているので確認すること。

インストール時のオプションを書き換えたい場合はこれらのファイルを編集すればよい。

オプションを足したい場合は

オプションを削除したい場合は

という記述を各バージョンごとのファイルに追記してやる。
※ここでの注意点として、configure_optionを最終行に追記すると反応しない場合があるらしいので先頭行に追記するのがベター。

たとえばPHP5.3.29をインストールする際に--enable-fpmを追加したければ、 ~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.29configure_option "--enable-fpm"を追記して保存する。

PHPのバージョンを切り替える

まずは下記コマンドでインストール済のPHPバージョンを確認する。

このようにリスト表示される。

そしたら状況に応じて下記コマンドのいずれかを実行。

例えばバージョン5.4.35を現在のディレクトリ以下のみで有効にしたい場合はこんな感じ。

上記を実行すると、そのディレクトリに.php-versionが生成され、その後指定したバージョンが有効になる。

試しにそのフォルダ内でphp -vを実行してやると、ちゃんとバージョンが適用されていることが分かる。

Apacheから特定のPHPバージョンを有効化する

  • まずはhttpd-develパッケージに付属しているapxsの場所を特定する。
    ※下記コマンドを実行すればOK。

  • 次にインストールしたいPHPのバージョンを決め、そのPHPバージョンのコンパイルオプション定義ファイルに次の行を追記する。

5.4.35の場合は~/.phpenv/plugins/php-build/share/php-build/definitions/5.4.35に下記を追記。

apxsへのパスは先ほどwhichコマンドで調べた際のものを指定。

  • 次にPHPのMakefileが出力するlibphp5.soの出力先パスを変更するためにパッチを当てる。

  • 次の内容を記載したファイルをphp-build.patchとして保存。

  • 下記コマンドを実行してパッチを当てる。
  • ビルドが完了すると、下記ディレクトリにlibphp5.soが出力される。
  • 最後にこのlibphp5.sohttpd.confでロードし、サーバーを再起動すれば完了。

※自分の場合はPHPのビルド完了と共に、httpd.conf内に自動で下記が追記されていたが、もし追記されていなければ追記して保存しれやればよい。

違うバージョンを試したい場合も同様にこの手順を繰り返してやればOK。 もしサーバーにもともとインストールしてあるPHPに戻したい場合はLoadModuleの行を消すなりコメントアウトするなりして、サーバーを再起動すればOK。

【WordPress】crayon-syntax-highlighterを導入前の記事に適用させない方法。

当ブログはcrayon導入前他のハイライト系プラグインを使っていたため、両方適応すると表示がぶっ壊れる問題にぶちあたったので調査。

まずは導入したタイミングまでに作成済みであったポストIDを調べる(※マンパワー)。

したらwp-content/plugins/crayon-syntax-highlighter/crayon_wp.class.php455行目付近の各ポスト記事を回しているforeach文の中身を下記のようにする。

見て分かる通り、導入前の記事に関してはすべてのプロセスを無視(コンティニュー)させてるだけ。

これにて一件落着。

【ムームードメイン】でAレコードを設定する。

下記ページがとてもわかり易かったのでペタリ。

【MySQL】使用可能な文字コードを一覧で取得する。

メモ。

こんな感じで取得される。

【MySQL】文字コードと照合順序を指定してデータベースを作成する。

メモ。

例)文字コードutf8、照合順序utf8_unicode_ciで作成する場合。