変数の型が違う物同士を演算しようとすると出る。
【PHP】PHP5.6でdie();を連続して記述するとサーバーからのレスポンスが帰ってこない。
なんで?
これは帰ってくる。というか普通にダンプ内容が表示される。
1 2 |
var_dump($hoge); die(); |
これはデータを受信していません、になる。
Chromeで言うとエラーコードERR_EMPTY_RESPONSE
になる。
1 2 3 |
var_dump($hoge); die(); die(); |
仕様なのか、、、??
追記:
die();の問題じゃないっぽい。
どうやらクラス内定数周りが絡むとこうなることが多い気がする。
要調査。
【CentOS】makeコマンドで「/usr/bin/ld: cannot find」と表示されたら。
makeコマンドを実行した際に「/usr/bin/ld: cannot find …」と怒られるのは、その後の「-l」以降に続く文字列名のライブラリが不足していることが原因。
例えば
1 |
/usr/bin/ld: cannot find -lltdl |
と表示されていたら、ltdl
という名前のパッケージが足りていないということ。
焦らずにyum search ltdl
とでも入力し、ひっかかったライブラリをインストールしてやればOK。
【CentOS/PHP】phpenvを道入して複数バージョンのPHPを管理する。
phpenv
複数バージョンのPHPを管理するツール。PHPのバージョンをフォルダごとに分けたりとかが出来る。
インストール
下記コマンドを順番に実行。
1 2 3 4 5 |
curl https://raw.githubusercontent.com/CHH/phpenv/master/bin/phpenv-install.sh | bash git clone git://github.com/CHH/php-build.git ~/.phpenv/plugins/php-build echo 'export PATH="$HOME/.phpenv/bin:$PATH"' >> ~/.bashrc echo 'eval "$(phpenv init -)"' >> ~/.bashrc exec $SHELL -l |
ここまできたらphpenv
コマンドが有効になる。
PHPをインストール
下記コマンドでインストール可能なPHPのバージョンを確認。
1 |
phpenv install -l |
こんな感じでリスト表示されるので、この中から使いたいバージョンを決める。
んで例えば5.3.29
をインストールしたい場合は下記の通り。
1 |
phpenv install 5.3.29 |
PHPインストール(コンパイル)時のオプションは下記ファイルに記載されているので確認すること。
1 2 3 4 |
# 全バージョン共通のデフォルトオプション ~/.phpenv/plugins/php-build/share/php-build/default_configure_options # 各バージョン毎のオプション ~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.29 |
インストール時のオプションを書き換えたい場合はこれらのファイルを編集すればよい。
オプションを足したい場合は
1 |
configure_option "--enable-fpm" |
オプションを削除したい場合は
1 |
configure_option -D "--enable-fpm" |
という記述を各バージョンごとのファイルに追記してやる。
※ここでの注意点として、configure_option
を最終行に追記すると反応しない場合があるらしいので先頭行に追記するのがベター。
たとえばPHP5.3.29
をインストールする際に--enable-fpm
を追加したければ、
~/.phpenv/plugins/php-build/share/php-build/definitions/5.3.29
にconfigure_option "--enable-fpm"
を追記して保存する。
PHPのバージョンを切り替える
まずは下記コマンドでインストール済のPHPバージョンを確認する。
1 |
phpenv versions |
このようにリスト表示される。
そしたら状況に応じて下記コマンドのいずれかを実行。
1 2 3 4 |
# 全てのディレクトリで有効にする場合 phpenv global [version] # 現在のディレクトリのみで有効にする場合 phpenv local [version] |
例えばバージョン5.4.35
を現在のディレクトリ以下のみで有効にしたい場合はこんな感じ。
1 |
phpenv local 5.4.35 |
上記を実行すると、そのディレクトリに.php-version
が生成され、その後指定したバージョンが有効になる。
試しにそのフォルダ内でphp -v
を実行してやると、ちゃんとバージョンが適用されていることが分かる。
Apacheから特定のPHPバージョンを有効化する
- まずは
httpd-devel
パッケージに付属しているapxs
の場所を特定する。
※下記コマンドを実行すればOK。
1 |
which apxs |
- 次にインストールしたいPHPのバージョンを決め、そのPHPバージョンのコンパイルオプション定義ファイルに次の行を追記する。
5.4.35
の場合は~/.phpenv/plugins/php-build/share/php-build/definitions/5.4.35
に下記を追記。
1 |
configure_option "--with-apxs2" "/usr/bin/apxs" |
apxs
へのパスは先ほどwhich
コマンドで調べた際のものを指定。
次にPHPのMakefileが出力する
libphp5.so
の出力先パスを変更するためにパッチを当てる。次の内容を記載したファイルを
php-build.patch
として保存。
1 2 3 4 5 6 7 8 9 10 11 12 |
@@ -358,6 +358,11 @@ cd "$source_path" { + if which apxs > /dev/null 2>&1; then + _LIBEXECDIR=`apxs -q LIBEXECDIR` + sed -i -e "s|LIBEXECDIR='\$(INSTALL_ROOT)$_LIBEXECDIR'|LIBEXECDIR=$PREFIX/libexec|" $TMP/source/$DEFINITION/Makefile + fi + make make install make clean |
- 下記コマンドを実行してパッチを当てる。
1 |
patch -u ~/.phpenv/plugins/php-build/bin/php-build < php-build.patch |
- ビルドが完了すると、下記ディレクトリに
libphp5.so
が出力される。
1 |
~/.phpenv/versions/[version]/libexec/libphp5.so |
- 最後にこの
libphp5.so
をhttpd.conf
でロードし、サーバーを再起動すれば完了。
※自分の場合はPHPのビルド完了と共に、httpd.conf内に自動で下記が追記されていたが、もし追記されていなければ追記して保存しれやればよい。
1 |
LoadModule php5_module /root/.phpenv/versions/[version]/libexec/libphp5.so |
違うバージョンを試したい場合も同様にこの手順を繰り返してやればOK。
もしサーバーにもともとインストールしてあるPHPに戻したい場合はLoadModule
の行を消すなりコメントアウトするなりして、サーバーを再起動すればOK。
【WordPress】crayon-syntax-highlighterを導入前の記事に適用させない方法。
当ブログはcrayon導入前他のハイライト系プラグインを使っていたため、両方適応すると表示がぶっ壊れる問題にぶちあたったので調査。
まずは導入したタイミングまでに作成済みであったポストIDを調べる(※マンパワー)。
したらwp-content/plugins/crayon-syntax-highlighter/crayon_wp.class.php
の455行目
付近の各ポスト記事を回しているforeach
文の中身を下記のようにする。
1 2 3 4 5 6 7 8 9 10 11 12 |
// Search for shortcode in posts foreach ($posts as $post) { $wp_id = $post->ID; // 適応したくない投稿IDを指定(ここでは2900以下を指定) if ($wp_id < 2900) { continue; } ... } |
見て分かる通り、導入前の記事に関してはすべてのプロセスを無視(コンティニュー)させてるだけ。
これにて一件落着。
【ムームードメイン】でAレコードを設定する。
下記ページがとてもわかり易かったのでペタリ。
【MySQL】使用可能な文字コードを一覧で取得する。
メモ。
1 |
show character set; |
こんな感じで取得される。
【MySQL】文字コードと照合順序を指定してデータベースを作成する。
メモ。
例)文字コードutf8
、照合順序utf8_unicode_ci
で作成する場合。
1 |
create database db_name character set utf8 collate utf8_unicode_ci; |