facebook twitter hatena line email

「Linux/phpインストール/php7.0」の版間の差分

提供: 初心者エンジニアの簡易メモ
移動: 案内検索
(Smarty-2系でエラーにある)
(Smarty-2系でエラーにある)
行56: 行56:
  
 
==php7.0でつまずくところ==
 
==php7.0でつまずくところ==
===Smarty-2系でエラーにある===
+
===Smarty-2系でエラーになる===
 
  Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /var/www/zend/twi/library/Smarty-2.6.18/libs/Smarty_Compiler.class.php on line 271
 
  Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /var/www/zend/twi/library/Smarty-2.6.18/libs/Smarty_Compiler.class.php on line 271
 
戻り値がnullになる様子。
 
戻り値がnullになる様子。
行65: 行65:
  
 
修正前
 
修正前
        $source_content = preg_replace($search.'e', "'"
+
$source_content = preg_replace($search.'e', "'"
 
                                       . $this->_quote_replace($this->left_delimiter) . 'php'
 
                                       . $this->_quote_replace($this->left_delimiter) . 'php'
 
                                       . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
 
                                       . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
行72: 行72:
  
 
修正後
 
修正後
        $source_content = preg_replace_callback($search, create_function ('$matches', "return '"
+
$source_content = preg_replace_callback($search, create_function ('$matches', "return '"
 
                                       . $this->_quote_replace($this->left_delimiter) . 'php'
 
                                       . $this->_quote_replace($this->left_delimiter) . 'php'
 
                                       . "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'"
 
                                       . "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'"

2016年2月17日 (水) 05:18時点における版

epelリポジトリ追加

sudo yum -y install epel-release

remiリポジトリ追加

cd /usr/local/src
wget http://rpms.famillecollet.com/enterprise/remi-release-6.rpm
sudo rpm -Uvh remi-release-6*.rpm

apache,mysql,nginxのサービス停止&アンインストール

sudo /etc/rc.d/init.d/httpd stop
sudo /etc/rc.d/init.d/nginx stop
sudo /etc/rc.d/init.d/php-fpm stop
sudo /etc/rc.d/init.d/mysqld stop
sudo yum list installed | grep php-*
sudo yum list installed | grep mysql-*
sudo yum remove php-*
sudo yum remove mysql

php7.0インストール(64bit)

sudo yum -y install php.x86_64 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-mbstring.x86_64 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-mcrypt.x86_64 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-devel.x86_64 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-mysql.x86_64 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-pecl-memcached.x86_64 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-gd.x86_64 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-opcache.x86_64 --enablerepo=remi,remi-php70 
sudo yum -y install php-fpm.x86_64 --enablerepo=remi,remi-php70 
sudo yum -y install php-pecl-xhprof.x86_64
sudo yum -y install php-pear --enablerepo=remi-php70
$ php -v
PHP 7.0.2 (cli) (built: Jan  6 2016 15:33:31) ( NTS )
Copyright (c) 1997-2015 The PHP Group
Zend Engine v3.0.0, Copyright (c) 1998-2015 Zend Technologies
   with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies

うまくいかない場合は以下remiを消してみる

--enablerepo=remi

php7.0のphp-pecl-xhprofはエラーになった・・・

sudo yum -y install php-pecl-xhprof.x86_64
エラー: パッケージ: php-pecl-xhprof-0.9.4-1.el6.x86_64 (epel)

php7.0インストール(32bit)

sudo yum -y install php.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-mbstring.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-mcrypt.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-devel.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-mysql.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-pecl-memcached.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-gd.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install --enablerepo=remi,remi-php70 php-opcache.i686
sudo yum -y install php-fpm.i686 --enablerepo=remi,remi-php70 
sudo yum -y install php-pecl-xhprof.i686 --enablerepo=remi --enablerepo=remi-php70
sudo yum -y install php-pear --enablerepo=remi-php70
$ php -v

php7.0でつまずくところ

Smarty-2系でエラーになる

Warning: preg_replace(): The /e modifier is no longer supported, use preg_replace_callback instead in /var/www/zend/twi/library/Smarty-2.6.18/libs/Smarty_Compiler.class.php on line 271

戻り値がnullになる様子。

参考:http://qiita.com/DQNEO/items/02a6c0234ed09dd4a5f3

最新のSmarty2だと直ってるっぽい。

修正前

$source_content = preg_replace($search.'e', "'"
                                      . $this->_quote_replace($this->left_delimiter) . 'php'
                                      . "' . str_repeat(\"\n\", substr_count('\\0', \"\n\")) .'"
                                      . $this->_quote_replace($this->right_delimiter)
                                      . "'"

修正後

$source_content = preg_replace_callback($search, create_function ('$matches', "return '"
                                      . $this->_quote_replace($this->left_delimiter) . 'php'
                                      . "' . str_repeat(\"\n\", substr_count('\$matches[1]', \"\n\")) .'"
                                      . $this->_quote_replace($this->right_delimiter)
                                      . "';")

smarty2公式差分:https://github.com/smarty-php/smarty/commit/0ecdd6c41d0de08cba846087abd02a9adb5218e5

php_mecabがエラーになる

Mecab [ショートカット]