PCがあれば何でもできる!スマートフォン用の表示で見るPCがあれば何でもできる!へっぽこアラサープログラマーが、覚えたての知識を得意げにお届けしますこの広告は、90日以上更新していないブログに表示しています。apache2上で動作するPHPのバージョン切り替えから先の手順を変えました。今日から、とある会社に転職するつもりが、ひょんな事からフリーランスになりました。今後の予定は一応決まっているのですが、進展があったらまた書きたいと思います!早速、今日はPHPを触るきっかけがあったのですが、PHPの環境構築時に、せっかくならrbenvっぽくバージョン管理したいなと思い、phpenvに手を出してみました。気軽に始めてみたものの、まさかここまでハマることになろうとは...。インストールした手順をメモっておきます。(Unix)(Yosemiteセットアップ時に初期で入っていたもの)brewでphpenvとphpbuildをインストールその名の通り、"phpenv"はPHPのバージョン管理、"php-build"はPHPの各バージョンのビルドとインストールを担当します。↑がないと、phpenvとphp-buildのformulaが見つからない。--HEADでmasterをDLしないとインストールできるPHPのバージョンリストが古い。phpenvの環境変数を設定.bashrcなどに記述する。.bashrcなどで読み込ませると、phpenvを認識する。phpbuildでのビルド前設定/usr/local/share/php-build/default_configure_optionsに追記し、PHPビルド時のオプションを追加。/usr/sbin/apxsこのオプションがないと、ビルド時にlibphp5.soが生成されない。各バージョンのlibphp5.soをapache2に読み込ませることで、apache2上で動作するPHPのバージョンを切り替えることができる。~/.phpenv/versions/5.6.7第2引数はインストール場所。上記の場合、libphp5.soは~/.phpenv/versions/5.6.7/libexec/apache2/libphp5.soに生成される。-vapache2上で動作するPHPのバージョン切り替え方法としては、php-buildでのビルド時に生成されたlibphp5.soをapache2に読み込ませるという形。Capitanになり書き込み権限がなくなったため、読み込むlibphp5.soのパスを変更する方法にする。apache2で読み込まれるlibphp5.soのパスは、httpd.confに記載されているので、そこを書き換える。バージョンの切り替え毎にhttpd.confでパス指定するのは面倒なので、ここでは/usr/local/libexec/apache2/libphp5.soに、対象のバージョンのlibphp5.soを配置することとする。/etc/apache2/httpd.confを開き、以下のように書き換え。/usr/local/libexec/apache2/libphp5.soそして、指定のディレクトリにlibphp5.soをコピー。restartでapache2を再起動後、phpinfo()でphpのバージョンを確認して完了。おまけ手動でのlibphp5.soのコピーとapache2再起動が面倒な場合、phpenv-apache-versionというプラグインを使うと良いと紹介されているが、この環境だとまともに動かなかった。そこでプラグインをインストール後に、少しスクリプトを修正。~/.phpenv/plugins/phpenv-apache-version~/.phpenv/plugins/phpenv-apache-version/bin/rbenv-apache-versionの以下の2箇所を修正。#apache2のモジュールのパスを固定に修正。PHPENV_APACHE_MODULE_PATH="/usr/local/libexec/apache2"fi#php-buildが生成するlibphp5.soのパスを正しいものに修正。5.6.7のような形でバージョン切り替え可能。追加で5.3.xをビルドしようとしたら、エラーが出たので追記します。parsers.〜省略〜re2cが足りないようなので、brewでインストールする。re2c再チャレンジ。time.〜省略〜対処方法として、/usr/local/share/php-build/default_configure_optionsに以下のオプションを追記。–disable-fpmどうやら5.4.xと5.3.xでインストールされるphp-fpmのバージョンが違い、競合が発生している模様。–disable-fpmオプションで同時にインストールしないようにすることで回避。将範フリーランス/エンジニア(主にサーバサイド、その他広く浅く)自宅の作業場は冷蔵庫の隣。キッチンエンジニアとして日々精進しています。(1)はてなブログをはじめよう!m_doi2さんは、はてなブログを使っています。ブログを報告するスターをつけました引用をストックしましたストック一覧を見る閉じる引用するにはまずログインしてくださいログイン閉じる引用をストックできませんでした。再度お試しください閉じる限定公開記事のため引用できません。