カテゴリー: PHP

SymfonyのアプリをAlpineコンテナに構築する際にgrep関係でつまずいた

Symfony2.8から3系のLTSにアップデートするためにまずは環境構築をと思い、
今までの開発環境からコンテナの開発環境に移行する時に起きた問題。

■今までの開発環境
CentOS6
PHP5.6.3
MySQL5.5

■今回試した開発環境
Docker
httpd:2.4.25-alpine
php:5.6-fpm-alpine
mysql:5.5

環境を構築してからソースをgit cloneして
設置していく際に以下のエラーが発生。

You have requested a non-existent service “*****************”.

サービスは読み込まれているか以下のコマンドで確認。

# ./app/console debug:container
/bin/grep: unrecognized option: fixed-strings
BusyBox v1.24.2 (2017-11-23 08:52:33 GMT) multi-call binary.

Usage: grep [-HhnlLoqvsriwFE] [-m N] [-A/B/C N] PATTERN/-e PATTERN.../-f FILE [FILE]...

Search for PATTERN in FILEs (or stdin)

        -H      Add 'filename:' prefix
        -h      Do not add 'filename:' prefix
        -n      Add 'line_no:' prefix
        -l      Show only names of files that match
        -L      Show only names of files that don't match
        -c      Show only count of matching lines
        -o      Show only the matching part of line
        -q      Quiet. Return 0 if PATTERN is found, 1 otherwise
        -v      Select non-matching lines
        -s      Suppress open and read errors
        -r      Recurse
        -i      Ignore case
        -w      Match whole words only
        -x      Match whole lines only
        -F      PATTERN is a literal (not regexp)
        -E      PATTERN is an extended regexp
        -m N    Match up to N times per file
        -A N    Print N lines of trailing context
        -B N    Print N lines of leading context
        -C N    Same as '-A N -B N'
        -e PTRN Pattern to match
        -f FILE Read pattern from file

Symfony Container Public Services
=================================
・・・
いつもより少ないサービス一覧
・・・

するといつもより少ない。。
あと、以下の部分が気になる。

/bin/grep: unrecognized option: fixed-strings
BusyBox v1.24.2 (2017-11-23 08:52:33 GMT) multi-call binary.

もしかしたらBusyBoxのgrepに何かあるんじゃないかということで、

JMS\DiExtraBundleの設定を変更してみる。
https://jmsyst.com/bundles/JMSDiExtraBundle/master/configuration
「disable_grep: true」を追加。

Symfony/app/config/config.yml

jms_di_extra:
    locations:
        all_bundles: false
        bundles: [AppBundle]
        directories: ["%kernel.root_dir%/../src"]

↓に変更

jms_di_extra:
    locations:
        all_bundles: false
        bundles: [AppBundle]
        directories: ["%kernel.root_dir%/../src"]
    disable_grep: true

とりあえず動いた。

CentOS7でyumでインストールしたPHP7.0をPHP7.1にアップデートする

CentOS7でyumでインストールしたPHP7.0をPHP7.1にアップデートする

作業メモ

■OSの確認

# cat /etc/redhat-release 
CentOS Linux release 7.2.1511 (Core) 

■現在のPHPの確認

# php -v
PHP 7.0.13 (cli) (built: Nov  8 2016 20:16:29) ( NTS )
Copyright (c) 1997-2016 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2016 Zend Technologies

■「remi-php71.repo」があるか確認する

# cat /etc/yum.repos.d/remi-php71.repo 
# This repository only provides PHP 7.1 and its extensions
# NOTICE: common dependencies are in "remi-safe"

[remi-php71]
name=Remi's PHP 7.1 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php71/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/7/php71/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php71-debuginfo]
name=Remi's PHP 7.1 RPM repository for Enterprise Linux 7 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/7/debug-php71/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php71-test]
name=Remi's PHP 7.1 test RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/test71/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/7/test71/mirror
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php71-test-debuginfo]
name=Remi's PHP 7.1 test RPM repository for Enterprise Linux 7 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/7/debug-test71/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

■php71が表示されるのを確認する

# yum search php
・・・
php71.x86_64 : Package that installs PHP 7.1
php71-php.x86_64 : PHP scripting language for creating dynamic web sites
・・・

■udpateする

# yum update php --enablerepo=remi-php71

■バージョンの確認

# php -v
PHP 7.1.7 (cli) (built: Jul  6 2017 13:31:15) ( NTS )
Copyright (c) 1997-2017 The PHP Group

※apacheの再起動なども忘れずに。

AngularJSでCalendarを表示する

カスタマイズできるのカレンダーが必要になったのでざっくり実装。

AngularJSでカレンダーを描画してみる。
合わせて、モーダルウィンドウ上でもカレンダーを表示してみる。

デモはこちら

サンプルソースコードはこちら

Mo3g4u/AngularJSCalendarSample

angularjscalendarsample

バックエンドに問い合わせて、月のカレンダーを受け取り
描画しているだけ。

バックエンドが返すデータに予約枠数とか、リンクなどを
含めれば予約カレンダーみたいなものができる想定。

基本からしっかり学ぶSymfony2入門 9章メモ

基本からしっかり学ぶSymfony2入門をやっていて、
9章のフィクスチャの読み込み(p271)で以下のようなエラーが出てしまったので調べたメモ。

$ php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database


  [Symfony\Component\Debug\Exception\FatalThrowableError]                                        
  Fatal error: Call to undefined method Doctrine\ORM\Internal\CommitOrderCalculator::addClass()  


doctrine:fixtures:load [--fixtures [FIXTURES]] [--append] [--em EM] [--shard SHARD] [--purge-with-truncate] [--multiple-transactions]

すると以下のページが見つかった。
This should resolve changes made in the latest release of doctrine2 #212

lib/Doctrine/ORM/Internal/CommitOrderCalculator.php
が変わってしまっていてエラーが出るように・・・。

ここの修正をとりあえずあててみた。
https://github.com/macnibblet/data-fixtures/commit/e92a836acda145867d4fd5138d27e6d991e74954
lib/Doctrine/Common/DataFixtures/Purger/ORMPurger.php

$ php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database
  > loading AppBundle\DataFixtures\ORM\LoadInquiryData
  > loading AppBundle\DataFixtures\ORM\LoadConcertData
  > loading AppBundle\DataFixtures\ORM\BlogArticleLoader

一応動いた。

こっちも試してみた。

DoctrineFixturesBundle/composer.json

$ composer remove doctrine/doctrine-fixtures-bundle 
$ composer require doctrine/data-fixtures '~1.0'
$ php app/console doctrine:fixtures:load
Careful, database will be purged. Do you want to continue y/N ?y
  > purging database
  > loading AppBundle\DataFixtures\ORM\LoadInquiryData
  > loading AppBundle\DataFixtures\ORM\LoadConcertData
  > loading AppBundle\DataFixtures\ORM\BlogArticleLoader

PHP7がリリースされたのでアップデートしてみる

PHP7が正式に出たのでアップデートしてみる

PHP7がリリースされましたね!

PHP7リリース記事⇒PHP 7.0.0 Released

以前↓のエントリを書きましたが、PHP7が正式にリリースされたのでupdateしてみる。

実験用にCentOS7にyumでPHP7を入れる

アップデートの仕方は「Remi’s RPM repository – Blog」に出てました。

PHP version 7.0.0 is released!

ただ、「yum-config-manager」入ってないので、手動でyumの設定ファイルを変更。

/etc/yum.repos.d/remi-php70.repo

[remi-php70]の「enabled」を1にします。

# This repository only provides PHP 7.0 and its extensions
# WARNING: If you enable this repository, you must also enable "remi"
#          which provides common dependencies

[remi-php70]
name=Remi's PHP 7.0 RPM repository for Enterprise Linux 7 - $basearch
#baseurl=http://rpms.remirepo.net/enterprise/7/php70/$basearch/
mirrorlist=http://rpms.remirepo.net/enterprise/7/php70/mirror
enabled=1
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

[remi-php70-debuginfo]
name=Remi's PHP 7.0 RPM repository for Enterprise Linux 7 - $basearch - debuginfo
baseurl=http://rpms.remirepo.net/enterprise/7/debug-php70/$basearch/
enabled=0
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-remi

enable=1にしたらアップデートを実行

[root@localhost yum.repos.d]# yum update php*                                                                                                                                                                                                
読み込んだプラグイン:fastestmirror
remi-php70                                                                                                                                                                                                            | 2.9 kB  00:00:00     
Loading mirror speeds from cached hostfile
 * base: www.ftp.ne.jp
 * epel: ftp.riken.jp
 * extras: www.ftp.ne.jp
 * remi-php70: remi.conetix.com.au
 * remi-safe: remi.conetix.com.au
 * updates: www.ftp.ne.jp
依存性の解決をしています
--> トランザクションの確認を実行しています。
---> パッケージ php70-php.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-cli.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-cli.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-common.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-common.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-devel.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-devel.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-gd.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-gd.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-json.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-json.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-mbstring.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-mbstring.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-mcrypt.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-mcrypt.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-mysqlnd.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-mysqlnd.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-pdo.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-pdo.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-xml.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-xml.x86_64 0:7.0.0-1.el7.remi を アップデート
---> パッケージ php70-php-xmlrpc.x86_64 0:7.0.0-0.22.RC6.el7.remi を 更新
---> パッケージ php70-php-xmlrpc.x86_64 0:7.0.0-1.el7.remi を アップデート
--> 依存性解決を終了しました。

依存性を解決しました

=============================================================================================================================================================================================================================================
 Package                                                        アーキテクチャー                                   バージョン                                                    リポジトリー                                           容量
=============================================================================================================================================================================================================================================
更新します:
 php70-php                                                      x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                             1.3 M
 php70-php-cli                                                  x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                             2.6 M
 php70-php-common                                               x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                             707 k
 php70-php-devel                                                x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                             626 k
 php70-php-gd                                                   x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                              62 k
 php70-php-json                                                 x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                              52 k
 php70-php-mbstring                                             x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                             519 k
 php70-php-mcrypt                                               x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                              49 k
 php70-php-mysqlnd                                              x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                             167 k
 php70-php-pdo                                                  x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                              98 k
 php70-php-xml                                                  x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                             157 k
 php70-php-xmlrpc                                               x86_64                                             7.0.0-1.el7.remi                                              remi-safe                                              69 k

トランザクションの要約
=============================================================================================================================================================================================================================================
更新  12 パッケージ

総ダウンロード容量: 6.3 M
Is this ok [y/d/N]: y
Downloading packages:
Delta RPMs disabled because /usr/bin/applydeltarpm not installed.
(1/12): php70-php-gd-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                      |  62 kB  00:00:01     
(2/12): php70-php-json-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                    |  52 kB  00:00:00     
(3/12): php70-php-cli-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                     | 2.6 MB  00:00:02     
(4/12): php70-php-mcrypt-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                  |  49 kB  00:00:00     
(5/12): php70-php-mysqlnd-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                 | 167 kB  00:00:00     
(6/12): php70-php-pdo-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                     |  98 kB  00:00:00     
(7/12): php70-php-xml-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                     | 157 kB  00:00:00     
(8/12): php70-php-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                         | 1.3 MB  00:00:02     
(9/12): php70-php-xmlrpc-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                  |  69 kB  00:00:00     
(10/12): php70-php-devel-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                  | 626 kB  00:00:03     
(11/12): php70-php-mbstring-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                               | 519 kB  00:00:00     
(12/12): php70-php-common-7.0.0-1.el7.remi.x86_64.rpm                                                                                                                                                                 | 707 kB  00:00:15     
---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
合計                                                                                                                                                                                                         418 kB/s | 6.3 MB  00:00:15     
Running transaction check
Running transaction test
Transaction test succeeded
Running transaction
  更新します              : php70-php-common-7.0.0-1.el7.remi.x86_64                                                                                                                                                                    1/24 
  更新します              : php70-php-json-7.0.0-1.el7.remi.x86_64                                                                                                                                                                      2/24 
  更新します              : php70-php-cli-7.0.0-1.el7.remi.x86_64                                                                                                                                                                       3/24 
  更新します              : php70-php-pdo-7.0.0-1.el7.remi.x86_64                                                                                                                                                                       4/24 
  更新します              : php70-php-xml-7.0.0-1.el7.remi.x86_64                                                                                                                                                                       5/24 
  更新します              : php70-php-xmlrpc-7.0.0-1.el7.remi.x86_64                                                                                                                                                                    6/24 
  更新します              : php70-php-mysqlnd-7.0.0-1.el7.remi.x86_64                                                                                                                                                                   7/24 
  更新します              : php70-php-devel-7.0.0-1.el7.remi.x86_64                                                                                                                                                                     8/24 
  更新します              : php70-php-7.0.0-1.el7.remi.x86_64                                                                                                                                                                           9/24 
  更新します              : php70-php-mcrypt-7.0.0-1.el7.remi.x86_64                                                                                                                                                                   10/24 
  更新します              : php70-php-gd-7.0.0-1.el7.remi.x86_64                                                                                                                                                                       11/24 
  更新します              : php70-php-mbstring-7.0.0-1.el7.remi.x86_64                                                                                                                                                                 12/24 
  整理中                  : php70-php-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                                   13/24 
  整理中                  : php70-php-mbstring-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                          14/24 
  整理中                  : php70-php-devel-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                             15/24 
  整理中                  : php70-php-cli-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                               16/24 
  整理中                  : php70-php-gd-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                                17/24 
  整理中                  : php70-php-mcrypt-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                            18/24 
  整理中                  : php70-php-xmlrpc-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                            19/24 
  整理中                  : php70-php-xml-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                               20/24 
  整理中                  : php70-php-mysqlnd-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                           21/24 
  整理中                  : php70-php-pdo-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                               22/24 
  整理中                  : php70-php-json-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                              23/24 
  整理中                  : php70-php-common-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                            24/24 
  検証中                  : php70-php-cli-7.0.0-1.el7.remi.x86_64                                                                                                                                                                       1/24 
  検証中                  : php70-php-mysqlnd-7.0.0-1.el7.remi.x86_64                                                                                                                                                                   2/24 
  検証中                  : php70-php-pdo-7.0.0-1.el7.remi.x86_64                                                                                                                                                                       3/24 
  検証中                  : php70-php-json-7.0.0-1.el7.remi.x86_64                                                                                                                                                                      4/24 
  検証中                  : php70-php-common-7.0.0-1.el7.remi.x86_64                                                                                                                                                                    5/24 
  検証中                  : php70-php-xmlrpc-7.0.0-1.el7.remi.x86_64                                                                                                                                                                    6/24 
  検証中                  : php70-php-mcrypt-7.0.0-1.el7.remi.x86_64                                                                                                                                                                    7/24 
  検証中                  : php70-php-gd-7.0.0-1.el7.remi.x86_64                                                                                                                                                                        8/24 
  検証中                  : php70-php-xml-7.0.0-1.el7.remi.x86_64                                                                                                                                                                       9/24 
  検証中                  : php70-php-devel-7.0.0-1.el7.remi.x86_64                                                                                                                                                                    10/24 
  検証中                  : php70-php-mbstring-7.0.0-1.el7.remi.x86_64                                                                                                                                                                 11/24 
  検証中                  : php70-php-7.0.0-1.el7.remi.x86_64                                                                                                                                                                          12/24 
  検証中                  : php70-php-json-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                              13/24 
  検証中                  : php70-php-cli-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                               14/24 
  検証中                  : php70-php-xmlrpc-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                            15/24 
  検証中                  : php70-php-common-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                            16/24 
  検証中                  : php70-php-mcrypt-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                            17/24 
  検証中                  : php70-php-mbstring-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                          18/24 
  検証中                  : php70-php-devel-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                             19/24 
  検証中                  : php70-php-pdo-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                               20/24 
  検証中                  : php70-php-mysqlnd-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                           21/24 
  検証中                  : php70-php-gd-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                                22/24 
  検証中                  : php70-php-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                                   23/24 
  検証中                  : php70-php-xml-7.0.0-0.22.RC6.el7.remi.x86_64                                                                                                                                                               24/24 

更新:
  php70-php.x86_64 0:7.0.0-1.el7.remi          php70-php-cli.x86_64 0:7.0.0-1.el7.remi          php70-php-common.x86_64 0:7.0.0-1.el7.remi     php70-php-devel.x86_64 0:7.0.0-1.el7.remi       php70-php-gd.x86_64 0:7.0.0-1.el7.remi     
  php70-php-json.x86_64 0:7.0.0-1.el7.remi     php70-php-mbstring.x86_64 0:7.0.0-1.el7.remi     php70-php-mcrypt.x86_64 0:7.0.0-1.el7.remi     php70-php-mysqlnd.x86_64 0:7.0.0-1.el7.remi     php70-php-pdo.x86_64 0:7.0.0-1.el7.remi    
  php70-php-xml.x86_64 0:7.0.0-1.el7.remi      php70-php-xmlrpc.x86_64 0:7.0.0-1.el7.remi      

完了しました!

さて確認!

[root@localhost ~]# php70 -v
PHP 7.0.0 (cli) (built: Dec  1 2015 16:06:41) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies

変わった!

実験用にCentOS7にyumでPHP7を入れる

実験用にCentOS7にyumでPHP7を入れる

# yum -y install epel-release

Remi’s RPM repository

Maintained Enterprise Linux (RHEL / CentOS / Other clones)
Enterprise Linux 7 – repository auto-configuration package : remi-release-7.rpm

↑のremi-release-7.rpmをインストール

# wget http://rpms.famillecollet.com/enterprise/remi-release-7.rpm
# rpm -Uvh remi-release-7.rpm 

あとはremi-php70を有効にして探せばOK。
このとき「php70」として探す必要がある。

# yum search --enablerepo=remi-php70 php70
# yum install --enablerepo=remi-php70 php70
# systemctl restart httpd.service
# php70 -v
PHP 7.0.0RC6 (cli) (built: Oct 28 2015 09:52:05) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

これだと「/opt/remi/php70」にインストールされてます。
SCLコマンドも一緒に入るので、以下でシェルで起動します。

# scl enable php70 bash 
# php -v
PHP 7.0.0RC6 (cli) (built: Oct 28 2015 09:52:05) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0-dev, Copyright (c) 1998-2015 Zend Technologies

Symfony2でmonologのログローテーション設定

Symfony2でmonologのログローテーション設定メモ。

いつの間にかlogファイルが大きくなっていたのでログのローテーションについて調べたメモ。

【Symfony2】モノログローテーション設定
http://www.starlod.net/symfony2-monolog.html

Monologのfingers_crossedがようやくわかった
http://d.hatena.ne.jp/Fivestar/20110801/1312217024

上記の2サイトを参考にしてprod環境で「fingers_crossed」の状態で
ログをローテーションするようにprodの設定を変更した。

app/config/config_prod.yml

monolog:
    handlers:
        main:
            type:         fingers_crossed
            action_level: error
            handler:      nested
        nested:
            type:   rotating_file
            max_files: 14
            path: "%kernel.logs_dir%/%kernel.environment%.log"
            level: debug

↑これで出来た。

phpのアップデートに伴いexpectの再インストール

今さらですが・・・。
PHPのバージョンを5.3.3から5.5.30にあげたときに↓のエラーが出た。

# php -v
PHP Warning:  PHP Startup: expect: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20121212
These options need to match
 in Unknown on line 0
PHP 5.5.30 (cli) (built: Oct  1 2015 09:05:12) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologies
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by Derick Rethans

php expectのインストール
http://www.mogumagu.com/wp/wordpress/?p=1510

上記で入れたのが原因でエラーが出ていた。

削除して入れなおし

# pecl uninstall channel://pecl.php.net/expect-0.3.1
# pecl install channel://pecl.php.net/expect-0.3.1

・・・
Build process completed successfully
Installing '/usr/lib/php/modules/expect.so'
install ok: channel://pecl.php.net/expect-0.3.1
configuration option "php_ini" is not set to php.ini location
You should add "extension=expect.so" to php.ini

/etc/php.d/expect.ini

# cat expect.ini                                                                                                                                                                                                         
extension=/usr/lib/php/modules/expect.so

これで直った。

ちなみに、去年php expect入れたときは0.3.1でリリースが2011-11-22で止まっていたけど
最近0.3.3が出ている模様

https://pecl.php.net/package/expect

Composerを利用してのFuelPHP初期セットアップ

Composerを利用してのFuelPHP初期セットアップ

頻繁にセットアップするわけじゃないので毎回忘れるし、
その時々で方法が変わってたりするので現時点でのFuelPHP
インストール手順をメモ。

■参考
FuelPHP 1.7.2のComposerによるインストール
http://blog.a-way-out.net/blog/2014/07/14/fuelphp-1-7-2-composer-installation/

$ composer create-project fuel/fuel:dev-1.7/master ProjectName

タイムアウトしてしまった。

Failed to download fuel/core from source: The process "git clone --no-checkout 'git://github.com/fuel/core.git' 'fuel/core' && cd 'fuel/core' && git remote add composer 'git://github.com/fuel/core.git' && git fetch composer" exceeded the timeout of 300 seconds.

タイムアウトの対策
Why composer install timeouts after 300 seconds?
http://stackoverflow.com/questions/18917768/why-composer-install-timeouts-after-300-seconds

$ export COMPOSER_PROCESS_TIMEOUT=600

一回消してもう一度行う。

$ composer create-project fuel/fuel:dev-1.7/master ProjectName
Installing fuel/fuel (dev-1.7/master bafb42f2ab52968aea886ef1e6f341d8a62840c9)
  - Installing fuel/fuel (dev-1.7/master 1.7/master)
    Cloning 1.7/master

Created project in ProjectName
Loading composer repositories with package information
Installing dependencies (including require-dev)
  - Installing composer/installers (v1.0.21)
    Loading from cache

  - Installing fuel/docs (dev-1.7/master 473174d)
    Cloning 473174da2cf503c60d4a9935b71acfc31f0906d0

  - Installing fuel/core (dev-1.7/master e8c221a)
    Cloning e8c221af4cb685aefef20cc50a70f369eb37cb95

  - Installing fuel/auth (dev-1.7/master aa9bd2e)
    Cloning aa9bd2e5104026814ff516aacf03258f62a94a55

  - Installing fuel/email (dev-1.7/master 8fbf378)
    Cloning 8fbf378d74bac170a96cad96ba0aed77e319a865

  - Installing fuel/oil (dev-1.7/master ea37c3a)
    Cloning ea37c3a7fe8675fb3327327213b2eca55303933a

  - Installing fuel/orm (dev-1.7/master 5e05c30)
    Cloning 5e05c3068562548657fea69850a23b23f65a5545

  - Installing fuel/parser (dev-1.7/master 0cacd10)
    Cloning 0cacd10d7b1b8f92a0eeddce75c6ba2c0c28112f

  - Installing fuelphp/upload (2.0.2)
    Loading from cache

  - Installing psr/log (1.0.0)
    Loading from cache

  - Installing monolog/monolog (1.5.0)
    Loading from cache

  - Installing michelf/php-markdown (1.4.0)
    Loading from cache

monolog/monolog suggests installing mlehner/gelf-php (Allow sending log messages to a GrayLog2 server)
monolog/monolog suggests installing raven/raven (Allow sending log messages to a Sentry server)
monolog/monolog suggests installing doctrine/couchdb (Allow sending log messages to a CouchDB server)
monolog/monolog suggests installing ext-amqp (Allow sending log messages to an AMQP server (1.0+ required))
monolog/monolog suggests installing ext-mongo (Allow sending log messages to a MongoDB server)
Writing lock file
Generating autoload files
        Made writable: /home/user/public_html/ProjectName/fuel/app/cache
        Made writable: /home/user/public_html/ProjectName/fuel/app/logs
        Made writable: /home/user/public_html/ProjectName/fuel/app/tmp
        Made writable: /home/user/public_html/ProjectName/fuel/app/config
Do you want to remove the existing VCS (.git, .svn..) history? [Y,n]? Y 

$ cd ProjectName/
$ oil --version
Fuel: 1.7.3 running in "development" mode

とりあえずインストールは出来た。

■git管理と権限設定

$ git init
Initialized empty Git repository in /******/ProjectName/.git/

$ git add -A
$ git commit


$ oil refine install
        Made writable: /home/user/public_html/ProjectName/fuel/app/cache
        Made writable: /home/user/public_html/ProjectName/fuel/app/logs
        Made writable: /home/user/public_html/ProjectName/fuel/app/tmp
        Made writable: /home/user/public_html/ProjectName/fuel/app/config

■DIコンテナを入れておく

Fuel Dependency
https://github.com/fuelphp/dependency

$ vim composer.json 
$ composer update
Loading composer repositories with package information
Updating dependencies (including require-dev)
  - Installing fuelphp/dependency (2.0.0)
    Downloading: 100%

Writing lock file
Generating autoload files

■アクセスURLの変更

アクセスするURLを調整するためにpublicディレクトリを任意の場所に任意の名前でコピー
この時assetsディレクトはコピーしないでおく。
fuel/core/config/asset.php

fuel/app/config
にコピーし

'paths' => array('assets/'),

の箇所を変更する。

■index.phpを消す

$ vim fuel/app/config/config.php
index_file' => false,

.htaccessの以下の部分のコメントを外す

# Remove index.php from URL
#RewriteCond %{HTTP:X-Requested-With} !^XMLHttpRequest$
#RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC]
#RewriteRule ^index\.php(.*)$ $1 [R=301,NS,L]
↓
# Remove index.php from URL
RewriteCond %{HTTP:X-Requested-With} !^XMLHttpRequest$
RewriteCond %{THE_REQUEST} ^[^/]*/index\.php [NC]
RewriteRule ^index\.php(.*)$ $1 [R=301,NS,L]

これで駄目な場合は
RewriteBaseを指定してみる。

あとはnamespaceベースでの指定とかに変更したりする。

【Symfony2】ScopeCrossingInjectionException ・・・

ScopeCrossingInjectionException ・・・
のエラーが出た時のメモ

use JMS\DiExtraBundle\Annotation as DI;

アノテーションを利用していて以下のようにInjectをした時にエラーが出た。

    /**
     * Constructor.
     *
     * @DI\InjectParams({
     *     "validatorHelper" = @DI\Inject("xxx_util.validator_helper"),
     * })
     * @param ValidatorHelperInterface $validatorHelper
     */
    public function __construct(
        ValidatorHelperInterface $validatorHelper
    ) {
        $this->injectedValidatorHelper = $validatorHelper;
    }

ScopeCrossingInjectionException: Scope Crossing Injection detected: The definition “************” references the service “xxx_util.validator_helper” which belongs to another scope hierarchy.
This service might not be available consistently.
Generally, it is safer to either move the definition “************” to scope “prototype”, or declare “container” as a child scope of “prototype”.
If you can be sure that the other scope is always active,
you can set the reference to strict=false to get rid of this error.

エラー文の最後に書いてあるように「strict=false」を追加すれば通った。

    /**
     * Constructor.
     *
     * @DI\InjectParams({
     *     "validatorHelper" = @DI\Inject("xxx_util.validator_helper", strict = false),
     * })
     * @param ValidatorHelperInterface $validatorHelper
     */
    public function __construct(
        ValidatorHelperInterface $validatorHelper
    ) {
        $this->injectedValidatorHelper = $validatorHelper;
    }

エラーをちゃんと最後まで読もう・・・。
■参考URL
Bundles/JMSDiExtraBundle/Annotations
http://jmsyst.com/bundles/JMSDiExtraBundle/master/annotations#inject