PHP已经进入了PHP8.0的测试研发阶段,其中就包括万众期待的PHP JIT新特性,这里我们尝新编译安装PHP8.0,并试着开启opcache中的JIT
环境:Debian10,假设已按照完成nginx
- 安装编译软件及依赖
apt install libonig-dev pkg-config build-essential autoconf bison re2c libxml2-dev libsqlite3-dev git
2. 安装PHP常用的库依赖,这里是debian的,不同版本系统和不同类型的系统可能不一样,需要自己查找必须的依赖。
apt-get install libssl-dev zlib1g-dev libcurl4-gnutls-dev libpng-dev libonig-dev libsodium-dev libargon2-dev
3. 下载PHP8测试版源码,这个是测试版的源码,实时更新,因此可能存在BUG甚至无法编译安装成功的情况。
git clone https://github.com/php/php-src.git cd php-src
./buildconf
进行编译前config
./configure --prefix=/usr/local/php8 \ --with-config-file-path=/usr/local/php8/etc \ --with-config-file-scan-dir=/usr/local/php8/etc/php.d \ --with-fpm-user=www \ --with-fpm-group=www \ --enable-mbstring \ --enable-ftp \ --enable-gd \ --enable-opcache \ --enable-gd-jis-conv \ --enable-mysqlnd \ --enable-pdo \ --enable-sockets \ --enable-fpm \ --enable-xml \ --enable-soap \ --enable-pcntl \ --enable-cli \ --with-freetype \ --with-jpeg \ --with-openssl \ --with-mysqli=mysqlnd \ --with-pdo-mysql=mysqlnd \ --with-pear \ --with-zlib \ --with-iconv \ --with-curl \ --enable-bcmath \ --enable-shmop \ --enable-exif \ --enable-sysvsem \ --enable-mbregex \ --with-password-argon2 \ --with-sodium=/usr/local \ --with-mhash \ --enable-ftp \ --enable-intl \ --with-xsl \ --with-gettext \ --with-zip \ --disable-debug \ PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:
4.编译及安装
make & make test & make install
5. 配置与测试
/usr/local/php8/bin/php -v
增加全局php环境变量
vim /etc/profile
末尾增加
PATH=$PATH:/usr/local/php8/bin export PATH
6.基础php配置
cp php.ini-production /usr/local/php8/etc/php.ini cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php8/etc/php-fpm.conf cp /usr/local/php8/etc/php-fpm.d/www.conf.default /usr/local/php8/etc/php-fpm.d/www.conf cp sapi/fpm/init.d.php-fpm /etc/init.d/php8-fpm chmod +x /etc/init.d/php8-fpm service php8-fpm start systemctl enable php8-fpm
修改php配置,去掉 php8-fpm.conf中 pid = run/php8-fpm.pid 前面的分号
vim /usr/local/php8/etc/php-fpm.conf
pid = run/php8-fpm.pid
修改www.conf中的启动用户和用户组为www-data已经监听端口为listen = 127.0.0.1:9080
user = www-data group = www-data listen = 127.0.0.1:9080
这里需要注意如果php-fpm无法使用service php-fpm start是可能因为系统启动项出现了误判,建议重启reboot再试。
7.开启opcache和JIT
cd /usr/local/php8/etc/php.d vim 02-opcache.ini
增加以下内容:
[opcache] zend_extension=opcache.so opcache.enable=1 opcache.enable_cli=1 opcache.memory_consumption=192 opcache.interned_strings_buffer=8 opcache.max_accelerated_files=100000 opcache.max_wasted_percentage=5 opcache.use_cwd=1 opcache.validate_timestamps=1 opcache.revalidate_freq=60 ;opcache.save_comments=0 opcache.fast_shutdown=1 opcache.consistency_checks=0 ;opcache.optimization_level=0 #启动JIT opcache.jit_buffer_size=64m opcache.jit=1205
重启php-fpm
service php8-fpm restart
以上问题需要注意找到对应的扩展php.ini的文件夹再建立设置开启opcache的配置文件。
经过以上配置后,搭配nginx或者apache就可以启动php文件的解析。
8. 修改php对应的nginx配置,修改对应的nginx.conf文件或扩展的配置conf文件,包含内容类似如下酌情调整:
server { listen 80; server_name test.sopans.com; access_log /var/log/nginx/test.sopans.com.access.log main; root /var/www/html/test; index index.html index.htm index.php; location ~ \.php { fastcgi_pass 127.0.0.1:9080; fastcgi_index index.php; root /var/www/html/test; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; # fastcgi_split_path_info ^(.+\.php)(/.*)$; # fastcgi_param PATH_INFO $fastcgi_path_info; include fastcgi_params; } }
这里需要注意一个问题,就是有的配置文件中需要指明location ~ \.php 下的root文件夹,不然这个傻子php总是找不到php文件的位置。
经过以上设置,你可以测试一个phpinfo的文件进行测<?php echo phpinfo(); ?>
如果没有意外我们将看到php中正确开启了jit
发表回复