なぜアップグレードするのかは聞かないでください。私は運用保守担当者ではありません。運用保守担当者ではなく、企業のサーバーである場合でも注意が必要です。私は丸一日穴を埋めただけです。この情けない一日を簡単に記録します# 以前の php7.0 をバックアップします (これは非常に重要です)この手順を実行していない場合は、直接アップグレードしてください。サーバーの 90% がハングアップすることは間違いありません。理由については、以前の構成が失われ、新しくインストールされた php7.1 構成が新しいためです。さまざまな拡張機能がなければ、サーバーはどのように動作しますか?もちろん、拡張機能をインストールしていない場合は、バックアップする必要はありません。
の設定を確認してください。アップグレードです。もちろん、php7.0cp -P /usr/local/php /usr/local/php70ログイン後にコピー
configureは以前よりも大きくすることはできますが、それより小さくすることはできません。前の
configure
を忘れた場合 (確実に覚えている人はいないでしょう)、phpinfo# を確認してください。 ##<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> php -i | grep configure</pre><div class="contentsignin">ログイン後にコピー</div></div>
これを置き換えて、前の configure
コマンドを取得しますphp -i | grep configure | sed -e "s/Configure Command => //; s/'//g"
php7.1 ソース コードをダウンロード
cd /usr/local/src wget -c http://cn2.php.net/get/php-7.1.0.tar.gz/from/this/mirror -O php-7.1.0.tar.gz tar -zxvf php-7.1.0.tar.gz cd php-7.1.0/
cd php-7.1.0
./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mhash --with-openssl --with-mcrypt --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --enable-opcache --enable-fpm
make
make install
ログイン後にコピー
これで基本的にインストールが完了します。簡単です。非常に簡単ですが、落とし穴があります落とし穴を埋めることから始めましょうアップグレードなので、当然構成は以前と同じである必要がありますcd php-7.1.0 ./configure --prefix=/usr/local/php --exec-prefix=/usr/local/php --bindir=/usr/local/php/bin --sbindir=/usr/local/php/sbin --includedir=/usr/local/php/include --libdir=/usr/local/php/lib/php --mandir=/usr/local/php/php/man --with-config-file-path=/usr/local/php/etc --with-mhash --with-openssl --with-mcrypt --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-gd --with-iconv --with-zlib --enable-zip --enable-inline-optimization --enable-shared --enable-xml --enable-bcmath --enable-shmop --enable-sysvsem --enable-mbregex --enable-mbstring --enable-ftp --enable-gd-native-ttf --enable-pcntl --enable-sockets --with-xmlrpc --enable-soap --without-pear --with-gettext --enable-session --with-curl --enable-opcache --enable-fpm make make install
cp /usr/local/php70/etc/php.ini /usr/local/php/etc/php.ini
cp /usr/local/php70/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf
cp /usr/local/php70/etc/php-fpm.d/www.conf /usr/local/php/etc/php-fpm.d/www.conf
ログイン後にコピー
拡張機能の落とし穴 (拡張機能が何であれ)以前にインストールされていたため、再インストールする必要があります。以前の拡張パック フォルダーにはインストールできません。新しい拡張パック フォルダーである必要があります。cp /usr/local/php70/etc/php.ini /usr/local/php/etc/php.ini cp /usr/local/php70/etc/php-fpm.conf /usr/local/php/etc/php-fpm.conf cp /usr/local/php70/etc/php-fpm.d/www.conf /usr/local/php/etc/php-fpm.d/www.conf
##、これは非常に重要です。そうしないと、 php -v を実行し続けると、次のような問題が発生します。
PHP Warning: PHP Startup: Unable to load dynamic library '/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/memcached.so' - /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303/memcached.so: cannot open shared object file: No such file or directory in Unknown on line 0
<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false">[root]$ /usr/local/php/bin/php-config --extension-dir
/usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303
[root]$ ls /usr/local/php7/lib/php/extensions/no-debug-non-zts-20160303</pre><div class="contentsignin">ログイン後にコピー</div></div>
は組み込みであり、その他はすべて新しいものです。他の拡張機能のインストール方法については説明しません。他の拡張機能をたくさんインストールしている場合は、おめでとうございます。もう一度練習してください。
再起動 php-fpm<div class="code" style="position:relative; padding:0px; margin:0px;"><pre class="brush:php;toolbar:false"> systemctl restart php-fpm</pre><div class="contentsignin">ログイン後にコピー</div></div>
View Status
systemctl status php-fpm -l
残りの落とし穴、コードの落とし穴
これは少し恥ずかしいことです。コードが非常に厳密に書かれていない場合、
error.log