VPSのPHPのバージョンを5.4からPHP7.0へアップした作業メモ。WordPress も高速化されるというのでいつまでも古いバージョン使っていても仕方ないですね。
ざっくりと。
インストールされているパッケージを確認
01 02 03 04 05 06 07 08 09 10 11 12 13 14 15 16 17 | $ yum list installed | grep php php.x86_64 5.4.24-1.el6.remi @remi php-cli.x86_64 5.4.24-1.el6.remi @remi php-common.x86_64 5.4.24-1.el6.remi @remi php-devel.x86_64 5.4.24-1.el6.remi @remi php-gd.x86_64 5.4.24-1.el6.remi @remi php-mbstring.x86_64 5.4.24-1.el6.remi @remi php-mcrypt.x86_64 5.4.24-1.el6.remi @remi php-mysql.x86_64 5.4.24-1.el6.remi @remi php-pdo.x86_64 5.4.24-1.el6.remi @remi php-pear.noarch 1:1.9.4-23.el6.remi @remi php-pecl-igbinary.x86_64 1.1.2-0.1.git3b8ab7e.el6.remi @remi php-pecl-imagick.x86_64 3.1.2-2.el6.remi.5.4 @remi php-pecl-memcached.x86_64 2.1.0-7.el6.remi.5.4 @remi php-process.x86_64 5.4.24-1.el6.remi @remi php-snmp.x86_64 5.4.24-1.el6.remi @remi php-xml.x86_64 5.4.24-1.el6.remi @remi |
remiから入れていたので、レポジトリの内容だけ更新。
1 2 3 4 5 | $ wget wget http: //rpms .famillecollet.com /enterprise/remi-release-6 .rpm $ sudo rpm -ivh . /remi-release-6 .rpm $ ls /etc/yum .repos.d/ CentOS-Base.repo CentOS-Base.repo.rpmnew CentOS-Media.repo CentOS-fasttrack.repo epel.repo remi-php71.repo remi.repo CentOS-Base.repo.orig CentOS-Debuginfo.repo CentOS-Vault.repo epel-testing.repo remi-php70.repo remi-safe.repo |
旧パッケージを削除。
1 | $ sudo yum -y remove php php-cli php-common php-devel php-gd php-mbstring php-mcrypt php-mysql php-pdo php-pear.noarch php-pecl-igbinary php-pecl-imagick php-pecl-memcached php-process php-snmp php-xml |
PHP7 をインストール。サイトによってはパッケージ名が実際と異なっていたこともあったので、 yum search してパッケージ名確認してから入れた方がいいみたいです。
001 002 003 004 005 006 007 008 009 010 011 012 013 014 015 016 017 018 019 020 021 022 023 024 025 026 027 028 029 030 031 032 033 034 035 036 037 038 039 040 041 042 043 044 045 046 047 048 049 050 051 052 053 054 055 056 057 058 059 060 061 062 063 064 065 066 067 068 069 070 071 072 073 074 075 076 077 078 079 080 081 082 083 084 085 086 087 088 089 090 091 092 093 094 095 096 097 098 099 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 | $ yum --enablerepo=remi-php70 search php70 読み込んだプラグイン:fastestmirror, security Loading mirror speeds from cached hostfile * remi-php70: mirror.smartmedia.net. id * remi-safe: mirror.smartmedia.net. id =============================================================== N /S Matched: php70 ================================================================php70-php-pecl-propro-devel.x86_64 : php70-php-pecl-propro developer files (header) php70-php-pecl-raphf-devel.x86_64 : php70-php-pecl-raphf developer files (header) php70-php-pecl-xmldiff-devel.x86_64 : php70-php-pecl-xmldiff developer files (header) php70-php-pecl-yaconf-devel.x86_64 : php70-php-pecl-yaconf developer files (header) php70-php-yaconf-devel.x86_64 : php70-php-yaconf developer files (header) php70-runtime.x86_64 : Package that handles php70 Software Collection. php70-scldevel.x86_64 : Package shipping development files for php70 php70.x86_64 : Package that installs PHP 7.0 php70-build.x86_64 : Package shipping basic build configuration php70-php.x86_64 : PHP scripting language for creating dynamic web sites php70-php-ast.x86_64 : Abstract Syntax Tree php70-php-bcmath.x86_64 : A module for PHP applications for using the bcmath library php70-php-cli.x86_64 : Command-line interface for PHP php70-php-common.x86_64 : Common files for PHP php70-php-dba.x86_64 : A database abstraction layer module for PHP applications php70-php-dbg.x86_64 : The interactive PHP debugger php70-php-devel.x86_64 : Files needed for building PHP extensions php70-php-embedded.x86_64 : PHP library for embedding in applications php70-php-enchant.x86_64 : Enchant spelling extension for PHP applications php70-php-fpm.x86_64 : PHP FastCGI Process Manager php70-php-gd.x86_64 : A module for PHP applications for using the gd graphics library php70-php-gmp.x86_64 : A module for PHP applications for using the GNU MP library php70-php-horde-horde-lz4.x86_64 : Horde LZ4 Compression Extension php70-php-imap.x86_64 : A module for PHP applications that use IMAP php70-php-interbase.x86_64 : A module for PHP applications that use Interbase /Firebird databases php70-php-intl.x86_64 : Internationalization extension for PHP applications php70-php-ioncube-loader.x86_64 : Loader for ionCube Encoded Files with ionCube 24 support php70-php-json.x86_64 : JavaScript Object Notation extension for PHP php70-php-ldap.x86_64 : A module for PHP applications that use LDAP php70-php-litespeed.x86_64 : LiteSpeed Web Server PHP support php70-php-lz4.x86_64 : LZ4 Extension for PHP php70-php-mbstring.x86_64 : A module for PHP applications which need multi-byte string handling php70-php-mcrypt.x86_64 : Standard PHP module provides mcrypt library support php70-php-mysqlnd.x86_64 : A module for PHP applications that use MySQL databases php70-php-oci8.x86_64 : A module for PHP applications that use OCI8 databases php70-php-odbc.x86_64 : A module for PHP applications that use ODBC databases php70-php-opcache.x86_64 : The Zend OPcache php70-php-pdo.x86_64 : A database access abstraction module for PHP applications php70-php-pdo-dblib.x86_64 : PDO driver Microsoft SQL Server and Sybase databases php70-php-pear.noarch : PHP Extension and Application Repository framework php70-php-pecl-amqp.x86_64 : Communicate with any AMQP compliant server php70-php-pecl-apcu.x86_64 : APC User Cache php70-php-pecl-apcu- bc .x86_64 : APCu Backwards Compatibility Module php70-php-pecl-apcu-devel.x86_64 : APCu developer files (header) php70-php-pecl-apfd.x86_64 : Always Populate Form Data php70-php-pecl-apm.x86_64 : Alternative PHP Monitor php70-php-pecl-bitset.x86_64 : BITSET library php70-php-pecl-cassandra.x86_64 : DataStax PHP Driver for Apache Cassandra php70-php-pecl-couchbase2.x86_64 : Couchbase Server PHP extension php70-php-pecl-crypto.x86_64 : Wrapper for OpenSSL Crypto Library php70-php-pecl-dbase.x86_64 : dBase database file access functions php70-php-pecl-dio.x86_64 : Direct I /O functions php70-php-pecl-druid.x86_64 : A Druid driver for PHP php70-php-pecl-ds.x86_64 : Data Structures for PHP php70-php-pecl-eio.x86_64 : Provides interface to the libeio library php70-php-pecl- env .x86_64 : Load environment variables php70-php-pecl-ev.x86_64 : Provides interface to libev library php70-php-pecl-event.x86_64 : Provides interface to libevent library php70-php-pecl-fann.x86_64 : Wrapper for FANN Library php70-php-pecl-gearman.x86_64 : PHP wrapper to libgearman php70-php-pecl-gender.x86_64 : Gender Extension php70-php-pecl-geoip.x86_64 : Extension to map IP addresses to geographic places php70-php-pecl-geospatial.x86_64 : PHP Extension to handle common geospatial functions php70-php-pecl-gmagick.x86_64 : Provides a wrapper to the GraphicsMagick library php70-php-pecl-gnupg.x86_64 : Wrapper around the gpgme library php70-php-pecl-hprose.x86_64 : Hprose for PHP php70-php-pecl-hrtime.x86_64 : High resolution timing php70-php-pecl-http.x86_64 : Extended HTTP support php70-php-pecl-http-devel.x86_64 : Extended HTTP support developer files (header) php70-php-pecl-igbinary.x86_64 : Replacement for the standard PHP serializer php70-php-pecl-igbinary-devel.x86_64 : Igbinary developer files (header) php70-php-pecl-imagick.x86_64 : Extension to create and modify images using ImageMagick php70-php-pecl-imagick-devel.x86_64 : imagick extension developer files (header) php70-php-pecl-inotify.x86_64 : Inotify php70-php-pecl-json-post.x86_64 : JSON POST handler php70-php-pecl-krb5.x86_64 : Kerberos authentification extension php70-php-pecl-krb5-devel.x86_64 : Kerberos extension developer files (header) php70-php-pecl-libsodium.x86_64 : Wrapper for the Sodium cryptographic library php70-php-pecl-lua.x86_64 : Embedded lua interpreter php70-php-pecl-lzf.x86_64 : Extension to handle LZF de /compression php70-php-pecl-mailparse.x86_64 : PHP PECL package for parsing and working with email messages php70-php-pecl-memcache.x86_64 : Extension to work with the Memcached caching daemon php70-php-pecl-memcached.x86_64 : Extension to work with the Memcached caching daemon php70-php-pecl-memprof.x86_64 : Memory usage profiler php70-php-pecl-mogilefs.x86_64 : PHP client library to communicate with the MogileFS storage php70-php-pecl-mongodb.x86_64 : MongoDB driver for PHP php70-php-pecl-msgpack.x86_64 : API for communicating with MessagePack serialization php70-php-pecl-msgpack-devel.x86_64 : MessagePack developer files (header) php70-php-pecl-mysql.x86_64 : MySQL database access functions php70-php-pecl-oauth.x86_64 : PHP OAuth consumer extension php70-php-pecl-pcs.x86_64 : PHP Code Service php70-php-pecl-pcs-devel.x86_64 : PHP Code Service (header) php70-php-pecl-pdflib.x86_64 : Package for generating PDF files php70-php-pecl-propro.x86_64 : Property proxy php70-php-pecl-radius.x86_64 : Radius client library php70-php-pecl-raphf.x86_64 : Resource and persistent handles factory php70-php-pecl-rdkafka.x86_64 : Kafka client based on librdkafka php70-php-pecl-redis.x86_64 : Extension for communicating with the Redis key-value store php70-php-pecl-ref.x86_64 : Soft and Weak references support in PHP php70-php-pecl-request.x86_64 : Server-side request and response objects php70-php-pecl-rrd.x86_64 : PHP Bindings for rrdtool php70-php-pecl-scrypt.x86_64 : Scrypt hashing function php70-php-pecl-seaslog.x86_64 : A effective,fast,stable log extension for PHP php70-php-pecl-selinux.x86_64 : SELinux binding for PHP scripting language php70-php-pecl-solr2.x86_64 : API orientée objet pour Apache Solr php70-php-pecl-ssdeep.x86_64 : Wrapper for libfuzzy library php70-php-pecl-ssh2.x86_64 : Bindings for the libssh2 library php70-php-pecl-stats.x86_64 : Routines for statistical computation php70-php-pecl-stomp.x86_64 : Stomp client extension php70-php-pecl-swoole.x86_64 : PHP's asynchronous concurrent distributed networking framework php70-php-pecl-swoole-serialize.x86_64 : Fast and Small serialize php70-php-pecl- sync .x86_64 : Named and unnamed synchronization objects php70-php-pecl-taint.x86_64 : XSS code sniffer php70-php-pecl-tcpwrap.x86_64 : Tcpwrappers binding php70-php-pecl-termbox.x86_64 : A termbox wrapper for PHP php70-php-pecl-trace.x86_64 : Trace is a low-overhead tracing tool for PHP php70-php-pecl-trader.x86_64 : Technical Analysis for traders php70-php-pecl-uopz.x86_64 : User Operations for Zend php70-php-pecl-uploadprogress.x86_64 : An extension to track progress of a file upload php70-php-pecl-uuid.x86_64 : Universally Unique Identifier extension for PHP php70-php-pecl-vld.x86_64 : Dump the internal representation of PHP scripts php70-php-pecl-weakref.x86_64 : Implementation of weak references php70-php-pecl-xattr.x86_64 : Extended attributes php70-php-pecl-xdebug.x86_64 : PECL package for debugging PHP scripts php70-php-pecl-xdiff.x86_64 : File differences /patches php70-php-pecl-xmldiff.x86_64 : XML diff and merge php70-php-pecl-xxtea.x86_64 : XXTEA encryption algorithm extension for PHP php70-php-pecl-yac.x86_64 : Lockless user data cache php70-php-pecl-yaconf.x86_64 : Yet Another Configurations Container php70-php-pecl-yaf.x86_64 : Yet Another Framework php70-php-pecl-yaml.x86_64 : PHP Bindings for yaml php70-php-pecl-yar.x86_64 : Light, concurrent RPC framework php70-php-pecl-yaz.x86_64 : Z39.50 /SRU client php70-php-pecl-zip.x86_64 : Une extension de gestion des ZIP php70-php-pecl-zmq.x86_64 : ZeroMQ messaging php70-php-pgsql.x86_64 : A PostgreSQL database module for PHP php70-php-phalcon3.x86_64 : Phalcon Framework php70-php-phpiredis.x86_64 : Client extension for Redis php70-php-pinba.x86_64 : Client extension for Pinba statistics server php70-php-process.x86_64 : Modules for PHP script using system process interfaces php70-php-pspell.x86_64 : A module for PHP applications for using pspell interfaces php70-php-recode.x86_64 : A module for PHP applications for using the recode library php70-php-smbclient.x86_64 : PHP wrapper for libsmbclient php70-php-snappy.x86_64 : Snappy Extension for PHP php70-php-snmp.x86_64 : A module for PHP applications that query SNMP-managed devices php70-php-soap.x86_64 : A module for PHP applications that use the SOAP protocol php70-php-suhosin.x86_64 : Suhosin is an advanced protection system for PHP installations php70-php-tarantool.x86_64 : PHP driver for Tarantool /Box php70-php-tidy.x86_64 : Standard PHP module provides tidy library support php70-php-xml.x86_64 : A module for PHP applications which use XML php70-php-xmlrpc.x86_64 : A module for PHP applications which use the XML-RPC protocol php70-php-yaconf.x86_64 : Yet Another Configurations Container php70-zephir.noarch : Zephir language for creation of extensions for PHP. php70-zephir-parser.x86_64 : Zephir parser extension |
1 | $ sudo yum --enablerepo=remi-php70 install php70 php70-php php70-php-cli php70-php-common php70-php-devel php70-php-gd php70-php-mbstring php70-php-mcrypt php70-php-mysql php70-php-pdo php70-php-pear.noarch php70-php-process php70-php-snmp php70-php-xml |
インストール直後だとPHP7のバイナリへパスが通っていないので、 /opt/remi/php70/enable の記述に従いパスを追加します。
1 2 3 4 5 | $ cat /opt/remi/php70/enable export PATH= /opt/remi/php70/root/usr/bin : /opt/remi/php70/root/usr/sbin ${PATH:+:${PATH}} export LD_LIBRARY_PATH= /opt/remi/php70/root/usr/lib64 ${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} export MANPATH= /opt/remi/php70/root/usr/share/man :${MANPATH} $ sudo source /opt/remi/php70/enable |
php.ini の場所は /etc/opt/remi/php70/php.ini にあるので、タイムゾーンの設定や日本語関係の mbstring の設定を変更しておきます。
Apacheを再起動して、サイトが正しく表示されれば更新完了。
……なのですが、旧バージョンからの非互換で動きませんでした。
PHP Parse error: syntax error, unexpected ‘new’ というエラーを吐く
検索して、php7でpear/http_requestが動かなくなった – パンクはいつも突然に を参考に & new
を new
に修正。
PHP Fatal error: Uncaught Error: Call to undefined function split() というエラーを吐く
先取り!PHP 7 と WordPress を参考にsplit
を explode
に修正。
とうに非推奨になっていた split が残っているコードって……。
まぁ、他にも色々エラーメッセージは出ているんですがひとまず警告レベルで致命傷にはなっていないのでいいかなと(良くない)
以上、こんな感じで。
コメント