Edited at

phpenvのコマンドとphpenv-apache-versionの切り替えコマンド

More than 1 year has passed since last update.

忘れるので、メモ書き。おまけは、導入時にこけたのでそれのメモ書きです。

導入時に参考にしたサイト

HomebrewでApache、PHP、MySQL、phpMyAdmin追加 - Furudateのブログ


phpenvのコマンド


インストールできるバージョンの一覧表示

$ phpenv install -l


インストールされているバージョンの表示

$ phpenv versions

* system (set by /Users/{ユーザー名}/.phpenv/version)
5.6.4

# * 印が現在設定されているPHPのバージョンです。
# systemであればOSに搭載されてるバージョンを指す
# Yosemite 10.10.4の場合、PHP 5.5.24となる


インストール

$ phpenv install {version}

# 例えば 5.4.27をインストールしたい場合
$ phpenv install 5.4.27


クライアント側のPHPバージョンを切り替える

$ phpenv global 5.4.27

# hashの更新を行う
$ phpenv rehash

# 設定ができた場合は確認をする
$ php -v
PHP 5.4.27 (cli) 〜中略


ローカル側のPHPバージョンを切り替える

phpenvでのローカルは、今いるディレクトリの場所だけ切り替える感じです。

# 切り替えたいディレクトリまで移動する

$ cd /var/www/project/sample

# バージョン変更
$ phpenv local 5.4.27

# unsetするまで維持するので、global環境のPHPに戻す
$ phpenv local --unset


使用中のShellだけPHPのバージョンを切り替える

iTerm2とかで試してます。

# タブで開いていれば、変更したいタブでコマンド実行

$ phpenv shell 5.4.27

# unsetして、global環境に戻す
$ phpenv shell --unset


phpenv-apache-versionのコマンド

PHPをインストール時に libphp5.so をphpenvのバージョン管理フォルダにコピーしておく必要がある


libphp5.soをコピーする

$ cp /usr/local/opt/httpd22/libexec/libphp5.so ~/.phpenv/versions/5.4.27/

# apacheのバージョンは適宜置き換えてください。


バージョンを切り替える

$ phpenv apache-version {version}

# 例
$ phpenv apache-version 5.4.27

実行後apacheの再起動を行うので、Macの場合はsudoでのパスワードが要求される



おまけ

apacheを新しく入れたときにLoadModulelibphp5.soがエラーで読み込めないというかapacheのシンタックスエラーで凄く悩んだので、忘れないようにメモ。

まぁ原因はあれです。色々わけも分からずやってたら、apxsのパスが変わっちゃったのに気づかず、php-buildの設定がクライアント側のapxsのままだったという落ちです。

httpd: Syntax error on line 117 of /usr/local/etc/apache2/2.2/httpd.conf: Cannot load /usr/local/Cellar/httpd22/2.2.29/libexec/libphp5.so into server: dlopen(/usr/local/Cellar/httpd22/2.2.29/libexec/libphp5.so, 10): Symbol not found: _ap_unixd_config\n  Referenced from: /usr/local/Cellar/httpd22/2.2.29/libexec/libphp5.so\n  Expected in: /usr/local/Cellar/httpd22/2.2.29/bin/httpd\n in /usr/local/Cellar/httpd22/2.2.29/libexec/libphp5.so

上記のようなシンタックスエラー吐いてる場合に、php-build--with-apxs2のパスを確認しなおしましょう。

ちなみにエラーの原因は、libphp5.soのmake時にapxsのパスが違うために起きているためですね。

Symbol not found: _ap_unixd_configの部分でapacheの場所が参照できなかったんだと思ってます。

なので、whichコマンドでちゃんとパスの確認をして、再度PHPのインストールを実行すればapacheに怒られずにすみます。

$ which apxs

# 結果(apacheを新規インスコしたら以下)
/usr/local/bin/apxs

# クライアントのままだと
/usr/sbin/apxs

まぁ何というかちゃんと動くようになって嬉しいね(・∀・)