Heim > Backend-Entwicklung > PHP8 > Kompilierung, Installation und Verwendung von PHP8.0 (ausführliche Erklärung)

Kompilierung, Installation und Verwendung von PHP8.0 (ausführliche Erklärung)

藏色散人
Freigeben: 2023-02-17 12:32:01
nach vorne
8738 Leute haben es durchsucht

Die offizielle Version von PHP8.0 ist seit langem veröffentlicht. In diesem Artikel wird die Installation vorgestellt und Laravel zum Vergleich von PHP7 verwendet. [Empfohlen: PHP-Video-Tutorial]

Installation und Konfiguration

Dieses Mal wurde das Betriebssystem 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
Nach dem Login kopieren

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
Nach dem Login kopieren

4.做个软连接

ln -s /opt/php8/bin/php /usr/bin/php8
Nach dem Login kopieren

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/
Nach dem Login kopieren

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

vim /lib/systemd/system/php8.0-fpm.service
Nach dem Login kopieren

内容如下

[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
Nach dem Login kopieren

配置

fpm-fpm,php.ini配置

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

opcache配置

PHP8多了一个jit配置,如下

[opcache]
zend_extension=opcache.so
opcache.enable=1 
opcache.jit_buffer_size=100M
opcache.jit=1255
Nach dem Login kopieren

启动

systemctl start php8.0-fpm
Nach dem Login kopieren

laravel

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

cd /opt/web
composer8 create-project --prefer-dist laravel/laravel php8
Nach dem Login kopieren

配置一下.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;
    }
}
Nach dem Login kopieren

添加一个接口

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'));
        });
    }
Nach dem Login kopieren

其他一样,不用修改。

加个测试接口看看:

Route::get('/test','WxController@test');
Nach dem Login kopieren

test

Installation

1 verwendet. Gehen Sie zur offiziellen Website, um die herunterzuladen 8.0 offizielle Version https://www.php.net/releases/8.php

3. Entpacken und installieren

<?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();
    }}
Nach dem Login kopieren
5. Installieren Sie Composer

ab -n 100 -c 10
Nach dem Login kopieren
php8.0-Systemdienst

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)
Nach dem Login kopieren
Der Inhalt ist wie folgt🎜
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)
Nach dem Login kopieren
🎜Konfiguration🎜🎜fpm-fpm, php.ini-Konfiguration🎜🎜Das Gleiche wie PHP7, aufgepasst zu Benutzerberechtigungen🎜🎜opcache-Konfiguration🎜🎜PHP8 hat eine zusätzliche JIT-Konfiguration, wie folgt🎜rrreee🎜Startup🎜rrreee🎜laravel🎜🎜Erstelle ein Laravel-Projekt[Empfohlen: Laravel-Video-Tutorial🎜]🎜rrreee🎜Konfigurieren Sie die .env-Datei🎜🎜 nginx-Konfiguration🎜🎜nginx-Konfiguration Konsistent mit PHP7🎜rrreee🎜Schnittstelle hinzufügen🎜🎜Die Routing-Methode von laravel7 weist in laravel8 einige Probleme auf. Ändern Sie die Schreibmethode von RouteServiceProvider.php.
Ändern Sie beispielsweise für API-Routing $this->namespace in AppHttpControllersApi. 🎜rrreee🎜Andere sind gleich, es besteht kein Bedarf an Änderungen. 🎜🎜Fügen Sie eine Testschnittstelle hinzu, um Folgendes zu sehen: 🎜rrreee🎜test-Schnittstelle prüft ein Datenelement und gibt 🎜rrreee🎜Vergleichstest PHP7🎜🎜Dieses Mal verwende ich PHP7.3, der Schnittstellencode ist der gleiche als PHP8, beide Schalten Sie den Opcache ein. 🎜🎜Die Serverkonfiguration ist 1 Core 2G, verwenden Sie ab zum einfachen Testen. Die Testergebnisse von 🎜rrreee🎜PHP7.3 lauten wie folgt: 🎜rrreee🎜Die Testergebnisse von PHP8.0 lauten wie folgt: 🎜rrreee

Das obige ist der detaillierte Inhalt vonKompilierung, Installation und Verwendung von PHP8.0 (ausführliche Erklärung). Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Verwandte Etiketten:
Quelle:csdn.net
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage