読者です 読者をやめる 読者になる 読者になる

vagrant 上のCentOSにSymfonyをインストール

今日は仮想環境上にSymfonyをインストールするぞー

下記↓を参考にしながら実行。
Symfony のインストールと設定 | Symfony2日本語ドキュメント

まず、
curl -s https://getcomposer.org/installer | php 

を実行すると、

#!/usr/bin/env php

All settings correct for using Composer

Downloading...


Composer successfully installed to: /home/vagrant/composer.phar

というメッセージが返ってきて無事入れられたようです。

次に、
php composer.phar create-project symfony/framework-standard-edition /path/to/webroot/Symfony 2.7.0

というコマンドを実行。


すると、しばらくの後、
Installing symfony/framework-standard-edition (v2.7.0)


                              
  [ErrorException]            
  mkdir(): Permission denied  
                              


create-project [-s|--stability="..."] [--prefer-source] [--prefer-dist] [--repository-url="..."] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [package] [directory] [version]

というエラーメッセージが、、、、

どうしようどうしよう、、、なんか権限がないらしいけど、こういうのイジるの怖い、、、

と、思ったら、単純にパスを指定していなかっただけっぽい。笑
普通に/path/to/webroot/のままやってた。

じゃぁここを変更しよう、と思ったはいいが、
rootディレクトリの場所がわからない、、、、、

確か仮想環境のフォルダとlocalのフォルダを共有するのにどこだかをいじった気がする、、、、


と思って調べたら/var/www/htmlがrootであるということが分かりました。

そこで、ここをrootパスとして再度 
php composer.phar create-project symfony/framework-standard-edition /var/www/html/Symfony 2.7.0

を実行。 

すると、無事ダウンロードが始まり、うまく進みました。

最後ここを設定する必要があったけど、メールのユーザーとか分からんから適当に入れといた 
database_host (127.0.0.1): localhost
database_port (null): 3306
database_name (symfony): symfony
database_user (root): root
database_password (null): 325241
mailer_transport (smtp): smtp
mailer_host (127.0.0.1): 127.0.0.1
mailer_user (null): kittaka 
mailer_password (null): 325241
secret (ThisTokenIsNotSoSecretChangeIt): 
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::buildBootstrap
> Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache


そしたら、最後の最後で下記のエラーメッセージが!!!!! 
 
PHP Fatal error:  Class 'DOMDocument' not found in /vagrant/Symfony/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php on line 52

Fatal error: Class 'DOMDocument' not found in /vagrant/Symfony/vendor/symfony/symfony/src/Symfony/Component/Config/Util/XmlUtils.php on line 52
Script Sensio\Bundle\DistributionBundle\Composer\ScriptHandler::clearCache handling the post-install-cmd event terminated with an exception
                                                                          
  [RuntimeException]                                                         
  An error occurred when executing the "'cache:clear --no-warmup'" command.  
                                                                             
create-project [-s|--stability="..."] [--prefer-source] [--prefer-dist] [--repository-url="..."] [--dev] [--no-dev] [--no-plugins] [--no-custom-installers] [--no-scripts] [--no-progress] [--keep-vcs] [--no-install] [--ignore-platform-reqs] [package] [directory] [version]

 Fatal errorが出てしまった、、、、
 
何やらphp-xmlとか言うのがないとのこと(何だそれ?)
と言うわけで、以下のページを参考にしてインストール。
PHP Fatal error: Class ‘DOMDocument’ not found in … - Techie Corner  

sudo yum install php-xml
を実行。


そしたらまたエラー、、、、
もうイヤだ、、、、
Error: Package: php-xml-5.3.3-46.el6_6.x86_64 (updates)
           Requires: php-common(x86-64) = 5.3.3-46.el6_6
           Installed: php-common-5.4.21-2.el6.remi.x86_64 (@remi)
               php-common(x86-64) = 5.4.21-2.el6.remi
           Available: php-common-5.3.3-38.el6.x86_64 (base)
               php-common(x86-64) = 5.3.3-38.el6
           Available: php-common-5.3.3-40.el6_6.x86_64 (updates)
               php-common(x86-64) = 5.3.3-40.el6_6
           Available: php-common-5.3.3-46.el6_6.x86_64 (updates)
               php-common(x86-64) = 5.3.3-46.el6_6
 You could try using --skip-broken to work around the problem
 You could try running: rpm -Va --nofiles --nodigest 

もうなんなのさ。。。と思いながらまた調べてみると、この記事を発見↓。
kuma memo: Symfony2をComposerでインストール
どうやらPHPをインストールした際の方法と違うから同じ方法じゃないとphp-xmlをインストールすることも出来ないらしい(?よく分からん)
 
ひとまず下記コマンドを実行。
 sudo yum install --enablerepo=remi php-xml

すると、うまく進み完了したようです。

既に出来てしまったSymfonyの余分なファイル群を削除して、再度インストールを開始して無事完了しました。