yumで入れてやればいい。
1 |
yum install patch |
ね。簡単でしょ。
yumで入れてやればいい。
1 |
yum install patch |
ね。簡単でしょ。
例えばwhich apxs
などを実行して、そんなもん無いよといわれてしまったら。
apxs
はhttpd-devel
モジュールに含まれているので次の通りインストールしてやればOK。
1 |
yum install httpd-devel |
これで/user/bin
以下にapxs
が配置されるはず。
※場所が違ってもwhich apxs
すればわかる。
自分用。
1 2 3 4 5 |
php_flag display_startup_errors on php_flag display_errors on php_flag html_errors on php_flag log_errors on php_value error_log /path/to/log/dir/PHP_errors.log |
変数の型が違う物同士を演算しようとすると出る。
なんで?
これは帰ってくる。というか普通にダンプ内容が表示される。
1 2 |
var_dump($hoge); die(); |
これはデータを受信していません、になる。
Chromeで言うとエラーコードERR_EMPTY_RESPONSE
になる。
1 2 3 |
var_dump($hoge); die(); die(); |
仕様なのか、、、??
die();の問題じゃないっぽい。
どうやらクラス内定数周りが絡むとこうなることが多い気がする。
要調査。
makeコマンドを実行した際に「/usr/bin/ld: cannot find …」と怒られるのは、その後の「-l」以降に続く文字列名のライブラリが不足していることが原因。
例えば
1 |
/usr/bin/ld: cannot find -lltdl |
と表示されていたら、ltdl
という名前のパッケージが足りていないということ。
焦らずにyum search ltdl
とでも入力し、ひっかかったライブラリをインストールしてやればOK。
複数バージョンの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のバージョンを確認。
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バージョンを確認する。
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
を実行してやると、ちゃんとバージョンが適用されていることが分かる。
httpd-devel
パッケージに付属しているapxs
の場所を特定する。
1 |
which apxs |
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。