検索
ホームページバックエンド開発PHPチュートリアルWordPress 用の PHP 7.0.3 をコンパイルおよびインストールするための完全なガイド

PHP7 の利点は何ですか?

まず第一に、PHP5 よりもメモリ使用量が少なく、第二に、パフォーマンスが 2 倍以上高速になり、最終的に WordPress の QPS はオリジナルの約 3 倍に向上します。 Re p WordPress 4.4 QPS の比較: 数値が大きいほど、QPS が高くなります

この例のホスト VPS 構成

帯域幅: 1Mbps
    CPU: 1 コア
  • オペレーティング システム: ubuntu 12.04 64 ビット
  • メモリ: 1GB
  • Yundun: はい
  • 環境: Linux + Nginx + Memcached + PHP-FPM
  • なぜコンパイルしてインストールする必要があるのですか?
  • このサイトで使用されている Ubuntu 12.04 のバージョンは低すぎます。 -get install では、GCC および PHP7 の最新バージョンをインストールできません。
  • GCC バージョンを確認してください

@Laruence PHP7 をコンパイルするには GCC 4.8 以降を使用することをお勧めします。GCC バージョンを確認してください:

$ gcc -v

4.8 未満の場合は、GCC をコンパイルしてアップグレードすることをお勧めします。 Linux で gcc をアップグレードする方法 – 個人テストあり – C++ 趣味の作者のブログ。

2016 年 2 月 15 日時点の GCC の最新バージョンは 5.3.0 です。GCC 公式 Web サイトにアクセスしてダウンロード アドレスを表示し、選択してください。

この例では、GCC 4.6.3 から GCC 5.3.0 にアップグレードします。手順は次のとおりです:

$ wget http://ftp.tsukuba.wide.ad.jp/software/gcc/releases/gcc-5.3.0/gcc-5.3.0.tar.gz$ tar -xf gcc-5.3.0.tar.gz$ cd gcc-5.3.0

download_prerequisites スクリプトを実行します。このスクリプトは、必要な依存関係ファイルとライブラリを自動的にダウンロードします:

$ ./contrib/download_prerequisites

出力を作成します。すべての中間ファイルはこのディレクトリに配置されます。

$ mkdir gcc_temp$ cd gcc_temp

Run

$ ../configure --enable-checking=release --enable-languages=c,c++ --disable-multilib$ make && make install

特別な注意を払ってください

コンパイル時間はマシンのパフォーマンスに依存し、より多くのメモリを消費します。サーバーのメモリも非常に不足している場合は、500M SWAP スワップ領域を有効にしてください。そうしないと、Make フェーズ中にメモリ不足のためエラーが報告されます。この例ではサーバーの IO パフォーマンスが非常に悪いため、終了後に SWAP スワップ領域をオフにしてください。

すごい

この例は、GCC 5.3.0 をコンパイルするのに 2 ~ 3 時間かかりました。 PHP7 のコンパイルとインストールが完了したら、この例では SWAP 交換領域をオフにします:

$ SWAP=/tmp/swap$ dd if=/dev/zero of=$SWAP bs=1M count=500$ mkswap $SWAP$ sudo swapon $SWAP

PHP7 のコンパイルとインストールを開始します

2016 年 2 月 15 日の時点で、PHP7 の最新の安定バージョンは PHP 7.0.3 です。バージョン情報: http://php.net/downloads.php 。最新バージョンをダウンロードします:

$ sudo swapoff -a

最初に構成ヘルプを参照できます:

$ wget http://cn2.php.net/get/php-7.0.3.tar.bz2/from/this/mirror$ tar jxvf mirror$ cd php-7.0.3/

この例で使用されている構成 (/usr/local/php はインストール先の場所です)

./configure --help

一部のモジュール見つからない場合は、個別にインストールする必要がある場合があります。たとえば、

./configure --prefix=/usr/local/php --with-curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip

インストールする必要があるモジュールは、 libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel libxml2 libxml2-devel mysql pcre-develcurl-devel libxslt です。 -devel など...

次の実行:

$ sudo apt-get install libcurl4-gnutls-dev

コンパイルとインストールを開始します。

PHP7のコンパイルとインストールが完了した画面

PHP7の設定と最適化

設定ファイルをコピー

完了後も、いくつかの設定と最適化を行う必要があります。まず、設定ファイルをコピーします:

$ make && make install

PHP7-FPM のテスト開始

オンライン サーバーでは通常、PHP5-FPM サービスが実行されています。 www.conf 内のユーザーとグループを、オンラインで使用されるユーザー名とユーザー グループに変更してください。競合を避けるために、デフォルトのポート番号 9000 を変更します。

PHP7-FPM を起動します:

$ cp php.ini-development /usr/local/php/lib/php.ini$ cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf$ cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf$ cp -R ./sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm

起動に成功すると、phpinfo() などが表示されます。

この例の PHP7-FPM のテスト ポートは 9008 です。オンライン nginx 設定が bokeyy であると仮定すると、次のようになります。

$ service php-fpm start

$ cp /etc/nginx/site-available/bokeyy /etc/nginx/site-enabled/bokeyy_php7$ vim /etc/nginx/site-enabled/bokeyy_php7

の 9000 を 9008 に変更し、ポートを開きます。次に、

rrree

は、新しいポート Web サイトのすべての側面が正常であるかどうかをテストできます。

パフォーマンス比較テスト

次に、PHP5.3.10 (ソース) と効率を直接比較してみましょう。

Opache を使用しない場合の PHP7.0.3 と PHP5.3.10 のパフォーマンスを比較すると、PHP7 は約 2 倍高速ですが、あまり明らかではありません

Opache を使用した場合の PHP7.0.3 と PHP5.3.10 のパフォーマンスを比較すると、パフォーマンスの向上は非常に顕著です

test .php content

fastcgi_pass 127.0.0.1:9000;

opcache を設定

したがって、Opcache (http://php.net/opcache) を有効にする必要があります。そして、WordPress の QPS を大幅に改善できることを証明する写真がすでにあります。

Opache を使用した場合と使用しない場合の WordPress 4.4 の QPS 比較

この例では、Opache の公式に推奨される構成と @Laruence が推奨する Opache 構成を組み合わせて、php.ini に次の内容を追加します:

$ service nginx configtest$ service nginx reload

その中に /usr/local/php/ lib/php/extensions /no-debug-non-zts-20151012/opcache.so は、opcache.so が存在するアドレスです。

PHP7-FPM を再起動します:

<?php$a = array();    for($i=0;$i<600000;$i++){        $a[$i] = $i;        }    foreach($a as $i)    {        array_key_exists($i, $a);    }?>

ここですべてのインストールと設定は終了です。

Yayicheng @Laruence には、PHP7 を最高のパフォーマンスに到達させるためのヒント | 04 Dec 15 という記事があり、PHP7 を高速化するための役立つ提案がたくさんあります。

この例は一部のみを採用しています。 php5-fpm プロセスによって毎日わずか 1G の小さなメモリが埋められるサーバーの場合、HugePage と Opcache ファイル キャッシュの両方に一定量の冗長メモリが必要ですが、これは適切ではありません。

让你的PHP7更快(GCC PGO) 建议先训练一下 GCC 再编译针对 WordPress 的定制化 PHP7 版本似乎也值得采纳。但是,由于服务器资源严重不足,基本上所有 WordPress 页面都不是即时生成的,而是走了时效为半天的 WP Super Cache 缓存。所以,生成 WordPress 首页的速度提升 7-10% 对本例的服务器来说意义很有限,所以也没有做了。

因此最后只采纳了“开启Opache”、“使用 GCC 4.8 以上的编译器”这两项。

清理环境

如果测试 PHP7-FPM 没有任何问题,就可以删掉测试网站

$ rm /etc/nginx/site-enabled/bokeyy_php7

编辑 www.conf 把 PHP7-FPM 的端口改成 9000

$ vim /usr/local/php/etc/php-fpm.d/www.conf

最后关掉 PHP5-FPM,用 PHP7-FPM 来替代:

$ service php-fpm configtest$ service php5-fpm stop$ service php-fpm restart$ service nginx configtest$ service nginx reload

增加软链接

为了无论在哪个目录下输入 php 都能调用刚刚安装的 /usr/local/php/bin/php ,而不用输入这么长,建立几个软链接

$ cd /usr/bin$ ln -s /usr/local/php/bin/php php$ ln -s /usr/local/php/bin/phpize phpize$ ln -s /usr/local/php/bin/php-config php-config

现在只要

$ php -v

就能查看刚刚安装的 php 版本了。以后安装 PHP 插件也可以直接 phpize 和 php-config 了。

本例还有 WordPress 网站需要 Memcache,所以还没有结束。

安装并配置 PHP7-MEMCACHED

你一定好奇 PHP 的 memcached 和 memcache 插件有什么区别。事实上,它们功能差不多,都依赖默认在 11211 端口的 memcached 服务,只是封装方法不同,而 php-memcached 更新更勤快一些,功能也更多。

最重要的是, 在安装 PHP 7.0.3 你会发现,你只能装 php-memcached ! 注意有这个 d (截至 2016年2月15日)。让我们开始吧:

请到 github 下载 php-memcached 插件的 php7 分支( https://github.com/php-memcached-dev/php-memcached/tree/php7 ):

$ wget https://github.com/php-memcached-dev/php-memcached/archive/php7.zip

解压并安装:

$ unzip php7.zip$ cd php-memcached-php7/$ root=/usr/local/php$ $root/bin/phpize$ ./configure --with-php-config=$root/bin/php-config

这一步可能会提示你没有 libmemcached 库:

$ cd ..$ wget  https://launchpad.net/libmemcached/1.0/1.0.18/+download/libmemcached-1.0.18.tar.gz$ tar xvf libmemcached-1.0.18.tar.gz$ cd libmemcached-1.0.18$ ./configure$ cd ../php-memcached-php7/$ ./configure --with-php-config=$root/bin/php-config

可能还提示不支持 memcache sasl ,推荐禁用,好吧!

$ ./configure --with-php-config=$root/bin/php-config --disable-memcached-sasl

终于可以运行

$ make && make install

最后将 memcached.so 的地址加入 php.ini 就装好了:

$ vim /usr/local/php/lib/php.ini

加入

extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20151012/memcached.so

但是还有一个坑前面没有提及: WordPress 官方 Memcached 插件 只支持 php-memcache ,注意没有 d。所以我们用这个支持 php-memcached 的插件 https://github.com/tollmanz/wordpress-pecl-memcached-object-cache 。按照链接所示一步步配置来就行了。

感兴趣的还可以看看插件作者关于 php-memcache 和 php-memcached 两个 PHP 插件区别的文章: WordPress Object Cache Driven By The PECL Memcache(d) Extension 。

为什么只能用 php-memcached (有d)

截止 2015年2月15日,PHP7.0.3 下直接试图安装 php-memcache 会报错:

fatal error: ext/standard/php_smart_str.h: No such file or directory

查了一下原因 ,是因为 PHP7 里面,这个文件改成了 php_smart_string.h 。博主尝试过手动将文件名改成正确的,然而也没有用,还会报错:

error: 'RETURN STRING' undeclared(first use in this function)

所以这是插件暂不兼容 PHP7 。只能等待,直到 php-memcache 插件更新。所以博主最后放弃,按照上文,使用了 php-memcached 插件作为替代。

参考的博客文章

  • The Definitive PHP 7.0 & HHVM Benchmark
  • linux下升级gcc的方法 – 亲测可用 – C++爱好者博客
  • 让PHP7达到最高性能的几个Tips | 04 Dec 15
  • Linux环境PHP7.0安装
声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
11ベストPHP URLショートナースクリプト(無料およびプレミアム)11ベストPHP URLショートナースクリプト(無料およびプレミアム)Mar 03, 2025 am 10:49 AM

多くの場合、キーワードと追跡パラメーターで散らかった長いURLは、訪問者を阻止できます。 URL短縮スクリプトはソリューションを提供し、ソーシャルメディアやその他のプラットフォームに最適な簡潔なリンクを作成します。 これらのスクリプトは、個々のWebサイトにとって価値があります

Laravelでフラッシュセッションデータを使用しますLaravelでフラッシュセッションデータを使用しますMar 12, 2025 pm 05:08 PM

Laravelは、直感的なフラッシュメソッドを使用して、一時的なセッションデータの処理を簡素化します。これは、アプリケーション内に簡単なメッセージ、アラート、または通知を表示するのに最適です。 データは、デフォルトで次の要求のためにのみ持続します。 $リクエスト -

LaravelのバックエンドでReactアプリを構築する:パート2、ReactLaravelのバックエンドでReactアプリを構築する:パート2、ReactMar 04, 2025 am 09:33 AM

これは、LaravelバックエンドとのReactアプリケーションの構築に関するシリーズの2番目と最終部分です。シリーズの最初の部分では、基本的な製品上場アプリケーションのためにLaravelを使用してRESTFUL APIを作成しました。このチュートリアルでは、開発者になります

Laravelテストでの簡略化されたHTTP応答のモッキングLaravelテストでの簡略化されたHTTP応答のモッキングMar 12, 2025 pm 05:09 PM

Laravelは簡潔なHTTP応答シミュレーション構文を提供し、HTTP相互作用テストを簡素化します。このアプローチは、テストシミュレーションをより直感的にしながら、コード冗長性を大幅に削減します。 基本的な実装は、さまざまな応答タイプのショートカットを提供します。 Illuminate \ support \ facades \ httpを使用します。 http :: fake([[ 'google.com' => 'hello world'、 'github.com' => ['foo' => 'bar']、 'forge.laravel.com' =>

PHPのカール:REST APIでPHPカール拡張機能を使用する方法PHPのカール:REST APIでPHPカール拡張機能を使用する方法Mar 14, 2025 am 11:42 AM

PHPクライアントURL(CURL)拡張機能は、開発者にとって強力なツールであり、リモートサーバーやREST APIとのシームレスな対話を可能にします。尊敬されるマルチプロトコルファイル転送ライブラリであるLibcurlを活用することにより、PHP Curlは効率的なexecuを促進します

Codecanyonで12の最高のPHPチャットスクリプトCodecanyonで12の最高のPHPチャットスクリプトMar 13, 2025 pm 12:08 PM

顧客の最も差し迫った問題にリアルタイムでインスタントソリューションを提供したいですか? ライブチャットを使用すると、顧客とのリアルタイムな会話を行い、すぐに問題を解決できます。それはあなたがあなたのカスタムにより速いサービスを提供することを可能にします

2025 PHP状況調査の発表2025 PHP状況調査の発表Mar 03, 2025 pm 04:20 PM

2025 PHP Landscape Surveyは、現在のPHP開発動向を調査しています。 開発者や企業に洞察を提供することを目的とした、フレームワークの使用、展開方法、および課題を調査します。 この調査では、現代のPHP Versioの成長が予想されています

Laravelの通知Laravelの通知Mar 04, 2025 am 09:22 AM

この記事では、Laravel Webフレームワークの通知システムを検討します。 Laravelの通知システムを使用すると、さまざまなチャネルでユーザーに通知を送信できます。今日は、通知ovを送信する方法について説明します

See all articles

ホットAIツール

Undresser.AI Undress

Undresser.AI Undress

リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover

AI Clothes Remover

写真から衣服を削除するオンライン AI ツール。

Undress AI Tool

Undress AI Tool

脱衣画像を無料で

Clothoff.io

Clothoff.io

AI衣類リムーバー

AI Hentai Generator

AI Hentai Generator

AIヘンタイを無料で生成します。

ホットツール

mPDF

mPDF

mPDF は、UTF-8 でエンコードされた HTML から PDF ファイルを生成できる PHP ライブラリです。オリジナルの作者である Ian Back は、Web サイトから「オンザフライ」で PDF ファイルを出力し、さまざまな言語を処理するために mPDF を作成しました。 HTML2FPDF などのオリジナルのスクリプトよりも遅く、Unicode フォントを使用すると生成されるファイルが大きくなりますが、CSS スタイルなどをサポートし、多くの機能強化が施されています。 RTL (アラビア語とヘブライ語) や CJK (中国語、日本語、韓国語) を含むほぼすべての言語をサポートします。ネストされたブロックレベル要素 (P、DIV など) をサポートします。

Safe Exam Browser

Safe Exam Browser

Safe Exam Browser は、オンライン試験を安全に受験するための安全なブラウザ環境です。このソフトウェアは、あらゆるコンピュータを安全なワークステーションに変えます。あらゆるユーティリティへのアクセスを制御し、学生が無許可のリソースを使用するのを防ぎます。

MinGW - Minimalist GNU for Windows

MinGW - Minimalist GNU for Windows

このプロジェクトは osdn.net/projects/mingw に移行中です。引き続きそこでフォローしていただけます。 MinGW: GNU Compiler Collection (GCC) のネイティブ Windows ポートであり、ネイティブ Windows アプリケーションを構築するための自由に配布可能なインポート ライブラリとヘッダー ファイルであり、C99 機能をサポートする MSVC ランタイムの拡張機能が含まれています。すべての MinGW ソフトウェアは 64 ビット Windows プラットフォームで実行できます。

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 Linux 新バージョン

SublimeText3 Linux 新バージョン

SublimeText3 Linux 最新バージョン