在LAMP的整体框架下,PHP是以模块的形式挂接到apache的,命令写到一个可执行文件内,可下载后执行:
wget https://blog.nyankowo.com/bash/installphp.sh && chmod +x installphp.sh && bash installphp.sh
安装预备软件
根据每家服务商提供的系统镜像不同,系统本身所带的软件包也不相同,编译的过程中缺少什么就查漏补缺安装什么:
yum install libxml2-devel sqlite-devel curl-devel libpng-devel libjpeg-devel freetype-devel libxslt-devel cmake3 ImageMagick-devel php-pecl-imagick-devel php-intl krb5-devel -y
安装oniguruma
在centos9中,暂时还没有oniguruma-devel的源,可以通过yum info oniguruma-devel
查询,如果有的话就直接安装,否则还需要编译一个,注意--libdir=/lib64
不可少:
wget https://github.com/kkos/oniguruma/releases/download/v6.9.9/onig-6.9.9.tar.gz -P /usr/local/src
tar -xvf /usr/local/src/onig-6.9.9.tar.gz -C /usr/local/src && cd /usr/local/src/onig-6.9.9
./configure --prefix=/usr/local/oniguruma --libdir=/lib64 && make && make install
安装zlib
在编译php的时候会提示zlib版本过低,所以编译一份:
wget https://libzip.org/download/libzip-1.11.1.tar.gz -P /usr/local/src
tar -xvf /usr/local/src/libzip-1.11.1.tar.gz -C /usr/local/src && cd /usr/local/src/libzip-1.11.1
cmake3 -DCMAKE_INSTALL_PREFIX=/usr/local/libzip && make && make install
编译UW IMAP
在后续使用mail时,需要imap,所以需要编译一份:
wget https://www.mirrorservice.org/sites/ftp.cac.washington.edu/imap/imap-2007f.tar.gz -P /usr/local/src
tar -xvf /usr/local/src/imap-2007f.tar.gz -C /usr/local/src && cd /usr/local/src/imap-2007f
make lnx SSLTYPE=none EXTRACFLAGS="-fPIC" EXTRALDFLAGS="-lcrypt"
mkdir -p /usr/local/c-client/include /usr/local/c-client/lib # 复制所需文件
cp -f c-client/*.h /usr/local/c-client/include/
cp -f c-client/*.c /usr/local/c-client/lib/
cp -f c-client/c-client.a /usr/local/c-client/lib/libc-client.a
ln -s /usr/local/c-client/lib/libc-client.a /usr/lib64/libc-client.so
安装php
对于不同版本的php,所用的参数有些不同,比如php8相比与php7,有很多参数被舍弃了,有参数报错的话请查阅官方文档:
wget https://www.php.net/distributions/php-8.3.12.tar.gz -P /usr/local/src
tar -xvf /usr/local/src/php-8.3.12.tar.gz -C /usr/local/src && cd /usr/local/src/php-8.3.12
./configure --prefix=/usr/local/php --with-apxs2=/usr/local/apache/bin/apxs --with-mysql-sock=/usr/local/mariadb/sock/mysql.sock --with-config-file-path=/usr/local/php/etc --with-openssl --with-zlib --with-freetype --enable-gd --with-jpeg --enable-short-tags --enable-sockets --enable-mbstring --enable-soap --enable-mbstring --enable-static --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --enable-mysqlnd-compression-support --with-curl --with-xsl --enable-ftp --with-libxml --enable-exif --with-zip --with-imap=/usr/local/c-client --with-kerberos PKG_CONFIG_PATH=/usr/local/libzip/lib64/pkgconfig --with-openssl --enable-intl && make && make install
libtool --finish /usr/local/src/php-8.3.12/libs
mkdir /usr/local/php/etc && cp php.ini-production /usr/local/php/etc/php.ini
对php的配置文件进行修改,以适配自身的需求,例如修改服务器文件上传大小的限制,对配置文件进行修改,完成配置:
upload_max_filesize = 512M
post_max_size = 512M
max_execution_time = 300
[!WARNING]
在编译安装PHP的过程中,可能会因为内存过小导致报错,例如可用内存小于1.5GB时,报错
make: *** [Makefile:909: ext/fileinfo/libmagic/apprentice.lo] Error 1
,此时需要修改SWAP内存交换空间,即使用硬盘空间充当内存:
- 查看当前swap大小:
free -h
- 创建用于交换分区的文件:
dd if=/dev/zero of=/mnt/swap bs=1M count=4096
,创建4GB交换空间- 设置交换分区文件:
mkswap /mnt/swap
- 启用交换分区文件:
swapon /mnt/swap
- 设置开机自启:编辑
/etc/fstab
文件,最后添加一行/mnt/swap swap swap defaults 0 0
- 设置交换空间使用阈值:编辑
/etc/sysctl.conf
文件,修改vm.swappiness = 70
,代表空闲内存小于70%就会使用SWAP空间
配置apache
打开apache的主配置文件,在模块的最后添加了一行LoadModule php_module modules/libphp.so
,在空白处加上<FilesMatch \.php$>SetHandler application/x-httpd-php</FilesMatch>
,同时在<DirectoryIndex>
的设置中,添加index.php在index.html前面,重启apache。
在htdocs网站目录下新建index.php文件,输入内容<?php phpinfo(); ?>,访问网站出现配置页面,就说明配置完成了。