カテゴリー: PHP

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

【phpStorm】SSH Terminalで接続して日本語が文字化ける場合

phpStorm

出来るだけ開発中に開くツールを減らすべく、
TerminalをphpStormのものに変更する。

SSH Terminalに接続して日本語が文字化ける場合↓

「File」->「Settings」->「Tools」->「SSH Terminal」

「Default encoding」を「UTF-8」に変更。

Terminalを「Floting Mode」で利用する場合デフォルトでは
Terminalを最小化する ->「Shift」+「Esc」
Terminalを表示する -> 「Alt」+「F12」
データベース接続もphpStormのものを利用するようにする。
「View」 -> 「Tool Windows」 -> 「Database」

【FuelPHP】FuelPHPでdompdfを使うまでの道のり

【FuelPHP】FuelPHPでdompdfを使うまでの道のり

前回まではoilコマンドで「fuel/packages/pdf」に
fuel-pdfをインストールして使っていたけど、
フォントのインストールしたり、設定ファイルを色々と
変更するなどしていると管理が面倒になったので、
fuel-pdfをやめて、dompdf自体を「fuel/app/vendor」
にいれて管理するように変更した。

前回のインストールの様子
【FuelPHP】FuelPHPでfuel-pdfを使うまでの道のり

dompdf自体をgitで設置することで前回までに起きていた
クラスが見つからない問題などが一切でなかったので、
こっちのやり方のほうが安心できる。
同梱されてる「tcpdf」使って無いしこれで問題ない。

とりえあず設定方法のメモ。

■fuel/app/vendor以下にdompdfをいれるので移動。

$ pwd
/home/linux-user/public_html/tmp/appname/fuel/app/vendor

■dompdfをcloneする

$ git clone https://github.com/dompdf/dompdf.git
Initialized empty Git repository in /home/linux-user/public_html/tmp/appname/fuel/app/vendor/dompdf/.git/
remote: Counting objects: 5634, done.
remote: Total 5634 (delta 0), reused 0 (delta 0), pack-reused 5634
Receiving objects: 100% (5634/5634), 13.47 MiB | 3.40 MiB/s, done.
Resolving deltas: 100% (3967/3967), done.

■できたフォルダに移動して・・・

$ cd dompdf/

■サブモジュールのinitとupdateで空になってた「php-font-lib」が入ります。

$ git submodule init
Submodule 'lib/php-font-lib' (https://github.com/PhenX/php-font-lib.git) registered for path 'lib/php-font-lib'

$ git submodule update
Initialized empty Git repository in /home/linux-user/public_html/tmp/appname/fuel/app/vendor/dompdf/lib/php-font-lib/.git/
remote: Counting objects: 885, done.
remote: Total 885 (delta 0), reused 0 (delta 0), pack-reused 885
Receiving objects: 100% (885/885), 9.25 MiB | 1.82 MiB/s, done.
Resolving deltas: 100% (493/493), done.
Submodule path 'lib/php-font-lib': checked out 'c30c7fc00a6b0d863e9bb4c5d5dd015298b2dc82'

■マルチバイト対応のためにIPAフォントを準備
(前回のインストール時に/home/linux-user/.fonts/にダウンロード済み)

$ php load_font.php ipagothic /home/linux-user/.fonts/IPAfont00303/ipagp.ttf
Unable to find bold face file.
Unable to find italic face file.
Unable to find bold_italic face file.
Copying /home/linux-user/.fonts/IPAfont00303/ipagp.ttf to /home/linux-user/public_html/tmp/appname/fuel/app/vendor/dompdf/lib/fonts/ipagp.ttf...
Generating Adobe Font Metrics for /home/linux-user/public_html/tmp/appname/fuel/app/vendor/dompdf/lib/fonts/ipagp...

■テスト用のコントローラを作成して実行

public function action_pdftest()
{
    require_once( APPPATH .'vendor/dompdf/dompdf_config.inc.php');
    $pdf = new \DOMPDF();
    $html ='<!DOCTYPE html>
        <html>
        <head>
        <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
        <title>xxx</title>
        <style>
        body { font-family: "ipagothic;" }
        </style>
        </head>
        <body>
        マルチバイト
        </body>
        </html>';
    $pdf->load_html($html);
    $pdf->render();
    $pdf->stream("sample.pdf", array("Attachment" => 0));
}

dompdf/dompdf
https://github.com/dompdf/dompdf

Usage dompdf
https://github.com/dompdf/dompdf/wiki/Usage