2023年5月2日更新:今天收到网友的反馈,PHP7.4.33根据本教程失败,最终换PHP8.1版本成功开启WEBP格式的支持。由于本人没有在低于PHP8.1的版本上测试,故没能验证本教程的有效性,但能确定PHP8.1和PHP8.2版本上的有效性,特此说明,希望能让有此需求的用户少走点弯路。
什么是WebP?
Webp是Google于2010年发布的一种同时提供了有损压缩和无损压缩的图片文件格式,以BSD授权条款发布(意味着它是免费开放的图片格式),它的优点是同等画质下,体积比JPG、PNG少了25%以上。WebP还支持动画、ICC色彩配置、XMP诠释数据、Alpha透明通道。经过多年的发展,目前全球主流浏览器如Chrome、微软EDGE、Firefox、苹果Safari等都已经支持WebP图片格式。
为什么用WebP?
大家都知道在互联网上,一个页面往往有一张或多张图片,过去JPG和PNG是互联网上最常见的图片格式,改用WebP后在不降低图片质量的前提下大大减少图片的大小,对用户而言,最直观的体验就是大大提升了页面加载速度,对于互联网提供商而言,使用WebP除了提升了用户体验,还能大大减少磁盘和宽带的成本,正因如此,国内越来越多的大型互联网产品包括微信公众号、百度图片等已经改用WebP。
OneinStack是一键PHP/JAVA安装脚本工具,是国内比较流行的Linux服务器安装和管理LNMP/LAMP的工具,本文介绍OneinStack开启WebP图片支持的方法。
首先在浏览器访问 服务器IP地址/phpinfo.php,找到gd,看有没有WebP Support enable,没有说明服务器不支持WebP,则需要卸载已经安装的PHP,修改PHP安装脚本重新编译安装PHP以启用对WebP的支持,下面介绍具体步骤,为了安全起见,操作前备份网站数据。
1.SSH连接服务器,执行cd oneinstack,再执行 ./uninstall.sh 输入 5 回车 接着 y 回车 卸载已经安装的PHP。
2.进入/root/oneinstack/include目录,找到要安装的PHP版本对应的文件打开,比如要安装PHP8.1.x则打开php-8.1.sh,在--with-zlib后面添加--with-webp(有两处):
./configure --prefix=${php_install_dir} --with-config-file-path=${php_install_dir}/etc \
--with-config-file-scan-dir=${php_install_dir}/etc/php.d \
--with-apxs2=${apache_install_dir}/bin/apxs ${phpcache_arg} --disable-fileinfo \
--enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--with-iconv=/usr/local --with-freetype --with-jpeg --with-zlib --with-webp \
--enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif \
--enable-sysvsem ${php81_with_curl} --enable-mbregex \
--enable-mbstring --with-password-argon2 --with-sodium=/usr/local --enable-gd ${php81_with_openssl} \
--with-mhash --enable-pcntl --enable-sockets --enable-ftp --enable-intl --with-xsl \
--with-gettext --with-zip=/usr/local --enable-soap --disable-debug ${php_modules_options}
else
./configure --prefix=${php_install_dir} --with-config-file-path=${php_install_dir}/etc \
--with-config-file-scan-dir=${php_install_dir}/etc/php.d \
--with-fpm-user=${run_user} --with-fpm-group=${run_group} --enable-fpm ${phpcache_arg} --disable-fileinfo \
--enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd \
--with-iconv=/usr/local --with-freetype --with-jpeg --with-zlib --with-webp \
--enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-exif \
--enable-sysvsem ${php81_with_curl} --enable-mbregex \
--enable-mbstring --with-password-argon2 --with-sodium=/usr/local --enable-gd ${php81_with_openssl} \
--with-mhash --enable-pcntl --enable-sockets --enable-ftp --enable-intl --with-xsl \
--with-gettext --with-zip=/usr/local --enable-soap --disable-debug ${php_modules_options}
修改后如图:
3.进入/root/oneinstack/src目录,删除所有包含要安装PHP版本的文件夹和文件,如本教程要安装PHP8.1则删除php-8.1.12和php-8.1.12.tar.gz。
4.执行cd ~/oneinstack 命令返回oneinstack目录,再执行./install.sh进入安装流程,除了Do you want to install PHP? [y/n]: 输入y回车,然后输入要安装的PHP版本序号,其他的都输入n或0跳过,如下:
Please input SSH port(Default: 22):回车
Do you want to install Web server? [y/n]: n
Do you want to install Database? [y/n]: n
Do you want to install PHP? [y/n]: y
Please select a version of the PHP:
1. Install php-5.3
2. Install php-5.4
3. Install php-5.5
4. Install php-5.6
5. Install php-7.0
6. Install php-7.1
7. Install php-7.2
8. Install php-7.3
9. Install php-7.4
10. Install php-8.0
11. Install php-8.1
12. Install php-8.2
Please input a number:(Default 7 press Enter) 11
Do you want to install opcode cache of the PHP? [y/n]: y
Please select a opcode cache of the PHP:
1. Install Zend OPcache
2. Install APCU
Please input a number:(Default 1 press Enter) 1
Please select PHP extensions:
0. Do not install
1. Install zendguardloader(PHP<=5.6)
2. Install ioncube
3. Install sourceguardian(PHP<=7.2)
4. Install imagick
5. Install gmagick
6. Install fileinfo
7. Install imap
8. Install ldap
9. Install phalcon(PHP>=5.5)
10. Install yaf(PHP>=7.0)
11. Install redis
12. Install memcached
13. Install memcache
14. Install mongodb
15. Install swoole
16. Install xdebug(PHP>=5.5)
Please input numbers:(Default '4 11 12' press Enter) 0
Do you want to install Nodejs? [y/n]: n
Do you want to install Pure-FTPd? [y/n]: n
Do you want to install phpMyAdmin? [y/n]: n
Do you want to install redis-server? [y/n]:n
如果安装PHP提示“No package 'libwebp' found ”如图:
则根据《安装PHP提示 No package 'libWebP' found 的解决方法》安装好libwebp后重新执行 ./install.sh 按照上面的步骤操作。
安装完PHP,再在浏览器访问 IP/phpinfo.php 找到gd可以看到已经有 WebP Support enable,说明已经启用对WebP图片格式的支持。