Maison >développement back-end >PHP8 >Compilation, installation et utilisation de PHP8.0 (explication détaillée)

Compilation, installation et utilisation de PHP8.0 (explication détaillée)

藏色散人
藏色散人avant
2022-02-16 11:19:308720parcourir

La version officielle de PHP8.0 est publiée depuis longtemps. Cet article présentera son installation et utilisera Laravel pour comparer PHP7 [Recommandé : Tutoriel vidéo PHP]

Installation et configuration

. Ceci Le système d'exploitation utilisé cette fois Ubuntu 18.04.4 LTSUbuntu 18.04.4 LTS

安装

1.准备必要库

apt-get install -y autoconf libxml2-dev libsqlite3-dev \
libcurl4-openssl-dev libssl-dev libonig-dev libtidy-dev zlib1g-dev

2.去官网下载8.0正式版 https://www.php.net/releases/8.0/en.php

3.解压安装

tar php-8.0.0.tar.gzcd php-8.0.0
./configure --prefix=/opt/php8 --with-config-file-path=/opt/php8/etc \
--enable-fpm --enable-mysqlnd --enable-opcache --enable-pcntl \
--enable-mbstring --enable-soap --enable-zip --enable-calendar \
--enable-bcmath --enable-exif --enable-ftp --enable-intl --with-mysqli \
--with-pdo-mysql --with-openssl --with-curl --with-gd --with-gettext \
--with-mhash --with-openssl --with-mcrypt --with-tidy --enable-wddx \
--with-xmlrpc --with-zlibmakemake installcp php.ini-production /opt/php/etc/php.inicd /opt/php8/etccp php-fpm.conf.default php-fpm.confcp ./php-fpm.d/www.conf.default ./php-fpm.d/www.conf

4.做个软连接

ln -s /opt/php8/bin/php /usr/bin/php8

5.安装composer

cd /opt/php8/bin/curl -sS https://getcomposer.org/installer | php8ln -s /opt/php8/bin/composer.phar /usr/bin/composer8
composer8 config -g repo.packagist composer https://mirrors.aliyun.com/composer/

6.添加一个php8.0的system service

vim /lib/systemd/system/php8.0-fpm.service

内容如下

[Unit]
Description=The PHP 8.0 FastCGI Process Manager
Documentation=man:php-fpm8.0(8)
After=network.target

[Service]
Type=simple
PIDFile=/var/run/php8.0-fpm.pid
ExecStart=/opt/php8/sbin/php-fpm --nodaemonize --fpm-config /opt/php8/etc/php-fpm.conf
ExecReload=/bin/kill -USR2 $MAINPID

[Install]
WantedBy=multi-user.target

配置

fpm-fpm,php.ini配置

和PHP7一样,注意下用户权限

opcache配置

PHP8多了一个jit配置,如下

[opcache]
zend_extension=opcache.so
opcache.enable=1 
opcache.jit_buffer_size=100M
opcache.jit=1255

启动

systemctl start php8.0-fpm

laravel

创建一个laravel项目【推荐:laravel视频教程

cd /opt/web
composer8 create-project --prefer-dist laravel/laravel php8

配置一下.env文件

nginx配置

nginx的配置和PHP7的一致

server {
    listen 94;

    access_log  /tmp/test94.log main;

    root /opt/web/php8/public;
    index index.php index.html index.htm;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }

    location ~ \.php {
        fastcgi_pass unix:/run/php/php8.0-fpm.sock;
        fastcgi_index /index.php;

        include fastcgi_params;

        fastcgi_split_path_info       ^(.+\.php)(/.+)$;
        fastcgi_param PATH_INFO       $fastcgi_path_info;
        fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
    }
}

添加一个接口

laravel7的路由写法在laravel8中有点问题,改下RouteServiceProvider.php的写法。
比如API路由,将$this->namespace改为AppHttpControllersApi

public function boot()
    {
        $this->configureRateLimiting();

        $this->routes(function () {
            Route::prefix('api')
                ->middleware('api')
		->namespace('App\Http\Controllers\Api')
                ->group(base_path('routes/api.php'));

            Route::middleware('web')
                ->namespace($this->namespace)
                ->group(base_path('routes/web.php'));
        });
    }

其他一样,不用修改。

加个测试接口看看:

Route::get('/test','WxController@test');

test

Installation

1 Préparez les bibliothèques nécessaires

<?phpnamespace App\Http\Controllers\Api;use App\Models\WareHouses;use Illuminate\Foundation\Auth\Access\AuthorizesRequests;use Illuminate\Foundation\Bus\DispatchesJobs;use Illuminate\Foundation\Validation\ValidatesRequests;use Illuminate\Http\Request;use Illuminate\Routing\Controller as BaseController;class WxController extends BaseController{
    use AuthorizesRequests, DispatchesJobs, ValidatesRequests;

    public function test(Request $request)
    {
        return WareHouses::find(1)->toarray();
    }}
2. 8.0 version officielle https://www .php.net/releases/8.0/en.php

3 Décompressez et installez

ab -n 100 -c 10
4 Établissez une connexion douce

This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.10.10 (be patient).....done


Server Software:        nginx/1.14.0
Server Hostname:        192.168.10.10
Server Port:            94

Document Path:          /api/test
Document Length:        255 bytes

Concurrency Level:      10
Time taken for tests:   0.400 seconds
Complete requests:      10
Failed requests:        0
Total transferred:      5720 bytes
HTML transferred:       2550 bytes
Requests per second:    25.00 [#/sec] (mean)
Time per request:       399.994 [ms] (mean)
Time per request:       39.999 [ms] (mean, across all concurrent requests)
Transfer rate:          13.97 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        8   10   2.1     11      13
Processing:   101  159  42.8    174     228
Waiting:      101  159  42.8    174     228
Total:        114  170  42.0    186     235

Percentage of the requests served within a certain time (ms)
  50%    186
  66%    186
  75%    197
  80%    219
  90%    235
  95%    235
  98%    235
  99%    235
 100%    235 (longest request)
5. Installez composer🎜
This is ApacheBench, Version 2.3 <$Revision: 1843412 $>
Copyright 1996 Adam Twiss, Zeus Technology Ltd, http://www.zeustech.net/
Licensed to The Apache Software Foundation, http://www.apache.org/

Benchmarking 192.168.10.10 (be patient).....done


Server Software:        nginx/1.14.0
Server Hostname:        192.168.10.10
Server Port:            94

Document Path:          /api/test
Document Length:        255 bytes

Concurrency Level:      10
Time taken for tests:   2.441 seconds
Complete requests:      100
Failed requests:        33
   (Connect: 0, Receive: 0, Length: 33, Exceptions: 0)
Non-2xx responses:      33
Total transferred:      268489 bytes
HTML transferred:       234720 bytes
Requests per second:    40.97 [#/sec] (mean)
Time per request:       244.096 [ms] (mean)
Time per request:       24.410 [ms] (mean, across all concurrent requests)
Transfer rate:          107.42 [Kbytes/sec] received

Connection Times (ms)
              min  mean[+/-sd] median   max
Connect:        7   15  18.1     10     132
Processing:    47  210 224.4    106     817
Waiting:       17  118 107.4    101     787
Total:         55  226 222.1    122     828

Percentage of the requests served within a certain time (ms)
  50%    122
  66%    137
  75%    164
  80%    289
  90%    640
  95%    809
  98%    820
  99%    828
 100%    828 (longest request)
🎜6. Service système php8.0🎜rrreee🎜 Le contenu est le suivant🎜rrreee🎜Configuration🎜🎜fpm-fpm, configuration php.ini🎜🎜La même chose que PHP7, faites attention aux autorisations utilisateur🎜🎜configuration opcache🎜🎜PHP8 a une configuration jit supplémentaire, comme suit🎜rrreee🎜Démarrage🎜rrreee🎜laravel🎜🎜Créer un projet Laravel[Recommandé : tutoriel vidéo Laravel🎜]🎜rrreee🎜Configurer le fichier .env🎜🎜 Configuration nginx🎜🎜Configuration nginx Compatible avec PHP7🎜rrreee🎜Ajouter une interface🎜🎜La méthode d'écriture de route de laravel7 a quelques problèmes dans laravel8, changez la méthode d'écriture de RouteServiceProvider .php.
Par exemple, pour le routage API, remplacez $this->namespace par AppHttpControllersApi. 🎜rrreee🎜Les autres sont identiques, pas besoin de modifier. 🎜🎜Ajoutez une interface de test pour voir : 🎜rrreee🎜L'interface test vérifie une donnée et renvoie 🎜rrreee🎜Test comparatif PHP7🎜🎜Cette fois j'utilise PHP7.3, le code de l'interface est le même comme PHP8, les deux activent opcache. 🎜🎜La configuration du serveur est 1 core 2G, utilisez ab pour tester simplement. Les résultats des tests de 🎜rrreee🎜PHP7.3 sont les suivants : 🎜rrreee🎜Les résultats des tests de PHP8.0 sont les suivants : 🎜rrreee

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer