弊社は Codeigniter を使ってWebシステムを作る事が多いのですが、
開発(ローカル)環境で作成したプロジェクトをLinuxサーバへ配置し、
いざURLに接続・・・と言う時に、
Fatal error: Arrays are not allowed as constants
が発生する事が多いです。
原因も分かっているので、毎回同じ対応するのですが、
とりあえず記録として残しておこうと思います。
まず、エラーの内容ですが、直訳でも通じる程シンプルで、
「配列は定数として使えませんよ」と言う事です。
配列を定数として使えるのは PHP 5.6 からで、
その前のバージョンでは使用出来ません。
Linux系のサーバーだと、デフォルトが PHP 5.5 というのが多くて、
毎回、サーバーに配置してから気付く、という感じです。
対処方法としては、PHPをバージョンアップさせるか、
それが無理なら、配列を定数として使う事を諦めるしかありません。
今回は、PHP のバージョンアップの手順を備忘録も兼ねて、残しておこうと思います。
なお、以降の手順は CetnOS の場合を想定しています。
1)現在のPHPのバージョンを確認する
何はともあれ、まずは現在のPHPのバージョンを確認します。$ php -v PHP 5.5.38 (cli) (built: Nov 9 2016 17:25:01) Copyright (c) 1997-2015 The PHP Group Zend Engine v2.5.0, Copyright (c) 1998-2015 Zend Technologiesやはりバージョンは5.5 です。
2)異なるバージョンのPHPをインストールする
次は、現状のPHPとは異なるバージョンのPHPをインストールします。今回は、PHP 5.6 をインストールします。
$ yum -y --enablerepo=epel,remi,remi-php56 install php56
これでインストールは出来たのですが、PATHは通っていない状態なので、下記を実行します。
$ source /opt/remi/php56/enableちなみに、「/opt/remi/php56/enable」の中身は、こんな感じです。
export PATH=/opt/remi/php56/root/usr/bin:/opt/remi/php56/root/usr/sbin${PATH:+:${PATH}} export LD_LIBRARY_PATH=/opt/remi/php56/root/usr/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export MANPATH=/opt/remi/php56/root/usr/share/man:${MANPATH}
次はphpコマンドのリンク先を変えていきます。
現状のリンク先を確認すると、
$ ls -lrt /usr/bin/php lrwxrwxrwx. 1 root root 14 11月 15 21:42 /usr/bin/php -> /usr/bin/php55現状はPHP 5.5にリンクされている事が分かります。
では、一旦リンクを外して、PHP 5.6へリンクするように変更します。
$ unlink php $ sudo ln -s /usr/bin/php56 /usr/bin/php
正しく変更されているか確認します。
$ ls -lrt /usr/bin/php lrwxrwxrwx. 1 root root 14 12月 3 12:35 /usr/bin/php -> /usr/bin/php56 $ php -v PHP 5.6.28 (cli) (built: Nov 9 2016 06:57:19) Copyright (c) 1997-2016 The PHP Group Zend Engine v2.6.0, Copyright (c) 1998-2016 Zend Technologies
これで、Fatal error: Arrays are not allowed as constants が発生しなくなるはずです。
CodeIgniter , PHP
0 件のコメント:
コメントを投稿