ComposerでCakephp3をインストールしようとしてハマった件
composerでcakephp3をインストールしようとしてはまりました。
7時間くらいハマりました。
開発環境
Mac OSX Marveriks
PHP 5.4.30
Apache/2.2.26 (Unix)
MAMPやXAMPPなどのソフトは使わず、MacにプリインストールされているPHPとApacheを利用しています。MysqlはHomebrewでインストール済み。composerはインストールしてある前提。
まずは、開発ディレクトリに移動。
curl -s https://getcomposer.org/installer | php
で、composer.pharが作成される。
次に、Cakephp3をインストール
php composer.phar create-project --prefer-dist cakephp/app test
すると、
Your requirements could not be resolved to an installable set of packages. Problem 1 - cakephp/cakephp 3.0.x-dev requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.1.x-dev requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.5 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.4 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.3 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.2 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.1 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0-beta3 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0-beta2 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0-beta1 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0-alpha2 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0-alpha1 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0-RC2 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0-RC1 requires ext-intl * -> the requested PHP extension intl is missing from your system. - cakephp/cakephp 3.0.0 requires ext-intl * -> the requested PHP extension intl is missing from your system. - Installation request for cakephp/cakephp ~3.0 -> satisfiable by cakephp/cakephp[3.0.0, 3.0.0-RC1, 3.0.0-RC2, 3.0.0-alpha1, 3.0.0-alpha2, 3.0.0-beta1, 3.0.0-beta2, 3.0.0-beta3, 3.0.1, 3.0.2, 3.0.3, 3.0.4, 3.0.5, 3.1.x-dev, 3.0.x-dev].
こんなエラーが。
PHP extension intlがないらしい。
調べると、
php.iniの設定で、extentionのコメントアウトを消せば、正常に動くとの事。
sudo vim /etc/php.ini
下記の1行を挿入
extension=intl.so
apache 再起動
sudo apachectl restart
先ほど試した時に、実は途中までインストールできていたようで、testディレクトリが出来ているので、
rm -rf test
でディレクトリを削除
もういちど
php composer.phar create-project --prefer-dist cakephp/app test
先ほどとエラーは変わらず。
intlモジュール自体がないっぽい
intlがあるか調べる
sudo find / -name *intl.so
ない。
ファイルが存在しない場合はintlモジュールをインストール必要がある。
調べると、peclでいれられるらしい
この辺りさんこうに
http://d.hatena.ne.jp/As_hsp/20120422/1335122128
http://qiita.com/ikemonn/items/45af7ede43b3d15d9d7a
cd /tmp && mkdir pear && cd pear $ curl -O http://pear.php.net/go-pear.phar $ sudo php -d detect_unicode=0 go-pear.phar
なんか聞かれたら基本 Enter
これでpeclとpearが使えるらしい
そこで、
sudo pecl install intl WARNING: channel "pecl.php.net" has updated its protocols, use "pecl channel-update pecl.php.net" to update downloading intl-3.0.0.tgz ... Starting to download intl-3.0.0.tgz (248,200 bytes) ....................................................done: 248,200 bytes 150 source files, building running: phpize Configuring for: PHP Api Version: 20100412 Zend Module Api No: 20100525 Zend Extension Api No: 220100525 Specify where ICU libraries and headers can be found [DEFAULT] :
と出て、Enterすると
building in /private/tmp/pear/install/pear-build-rootpsbe7m/intl-3.0.0 running: /private/tmp/pear/install/intl/configure --with-icu-dir=DEFAULT checking for grep that handles long lines and -e... /usr/bin/grep checking for egrep... /usr/bin/grep -E checking for a sed that does not truncate output... /usr/bin/sed checking for cc... cc checking whether the C compiler works... yes checking for C compiler default output file name... a.out checking for suffix of executables... checking whether we are cross compiling... no checking for suffix of object files... o checking whether we are using the GNU C compiler... yes checking whether cc accepts -g... yes checking for cc option to accept ISO C89... none needed checking how to run the C preprocessor... cc -E checking for icc... no checking for suncc... no checking whether cc understands -c and -o together... yes checking for system library directory... lib checking if compiler supports -R... no checking if compiler supports -Wl,-rpath,... yes checking build system type... i386-apple-darwin13.4.0 checking host system type... i386-apple-darwin13.4.0 checking target system type... i386-apple-darwin13.4.0 checking for PHP prefix... /usr checking for PHP includes... -I/usr/include/php -I/usr/include/php/main -I/usr/include/php/TSRM -I/usr/include/php/Zend -I/usr/include/php/ext -I/usr/include/php/ext/date/lib checking for PHP extension directory... /usr/lib/php/extensions/no-debug-non-zts-20100525 checking for PHP installed headers prefix... /usr/include/php checking if debug is enabled... no checking if zts is enabled... no checking for re2c... no configure: WARNING: You will need re2c 0.13.4 or later if you want to regenerate PHP parsers. checking for gawk... no checking for nawk... no checking for awk... awk checking if awk is broken... no checking whether to enable internationalization support... yes, shared checking for icu-config... no checking for location of ICU headers and libraries... not found configure: error: Unable to detect ICU prefix or no failed. Please verify ICU install prefix and make sure icu-config works. ERROR: `/private/tmp/pear/install/intl/configure --with-icu-dir=DEFAULT' failed
とエラーになる。
icuのなにかがエラーになる
http://freddyduarte.com/2013/08/14/installing-the-icu-libraries-and-the-php-intl-extension-on-a-mac/
これを参考に
sudo pecl update-channels Updating channel "doc.php.net" Update of Channel "doc.php.net" succeeded Updating channel "pear.php.net" Update of Channel "pear.php.net" succeeded Updating channel "pecl.php.net" Update of Channel "pecl.php.net" succeeded
PATHを通す
export PATH=$PATH:/Users/your_username/pear/bin
icuってのをいれなきゃ行けないらしい
http://site.icu-project.org/download/48#ICU4C
にいき、icu4c-4_8_1_1-src.tgz
をダウンロード
tar -xvf icu4c-4_8_1_1-src.tgz
をするも、
tar: Error opening archive: Failed to open 'icu4c-4_8_1_1-src.tgz'
と怒られる
謎
brew install icu4c && brew link icu4c
Homebrewでいれようとしたら、
あった
Warning: icu4c-55.1 already installed Warning: icu4c is keg-only and must be linked with --force Note that doing so can interfere with building software.
http://robinvdvleuten.nl/blog/install-the-intl-php-extension-in-mamp/
curl -O http://download.icu-project.org/files/icu4c/4.8.1.1/icu4c-4_8_1_1-src.tgz $ tar xzvf icu4c-4_8_1_1-src.tgz $ cd icu/source $ ./runConfigureICU MacOSX $ make && sudo make install
なんかうまいこといったっぽい
これで、icuははいった
しかし
pecl install intl
すると、しっぱい
No releases available for package "pecl.php.net/intl" install failed
あー、もうpeclでいれられない。。
仕方ない。
peclは諦めて他の手段で、intlいれるか。
調べてみると、macportsでいれられるらしい
macportsをインストール
http://qiita.com/us10096698/items/54195e60b7afb60105ef
macportsインストールできたけど、
なんかパス通ってなかったので自分で入れる
http://tukaikta.blog135.fc2.com/blog-entry-158.html
port -v MacPorts 2.3.3 Entering interactive mode... ("help" for help, "quit" to quit)
macports使える様になった
sudo port install php54-intl
きたーーー!
しかし、composerでcakeをいれようとすると
PHP Startup: Unable to load dynamic library '/usr/lib/php/extensions/no-debug-non-zts-20100525/intl.so' - dlopen(/usr/lib/php/extensions/no-debug-non-zts-20100525/intl.so, 9): image not found in Unknown on line 0
imageがないとのこと。
php54-intlは入ってるはずなので、単に参照先にフォルダがない。
sudo cp /opt/local/lib/php54/extensions/no-debug-non-zts-20100525/intl.so /usr/lib/php/extensions/no-debug-non-zts-20100525
これで、コピーする
そして、
composerをやると!
きたー!!!
cakephp3かっこいい!
[参考URL]
http://pk-brothers.com/1705/
http://darraghenright.tumblr.com/post/22027208929/installing-intl-package-on-osx-lion
http://nagoring.com/blog/cakephp3-rc1-install-error/
http://d.hatena.ne.jp/As_hsp/20120422/1335122128
http://qiita.com/ikemonn/items/45af7ede43b3d15d9d7a
http://freddyduarte.com/2013/08/14/installing-the-icu-libraries-and-the-php-intl-extension-on-a-mac/
http://robinvdvleuten.nl/blog/install-the-intl-php-extension-in-mamp/
http://qiita.com/us10096698/items/54195e60b7afb60105ef
http://tukaikta.blog135.fc2.com/blog-entry-158.html
ディスカッション
コメント一覧
まだ、コメントがありません