在开始编译安装PHP之前,请确保你的Linux系统已经安装了必要的编译工具和依赖库:
# 对于基于Debian/Ubuntu的系统
sudo apt update
sudo apt install -y build-essential autoconf libtool bison re2c \
libxml2-dev libsqlite3-dev libssl-dev libcurl4-openssl-dev \
libonig-dev libzip-dev zlib1g-dev libpng-dev libjpeg-dev \
libfreetype6-dev libwebp-dev libxpm-dev
# 对于基于RHEL/CentOS的系统
sudo yum groupinstall -y "Development Tools"
sudo yum install -y libxml2-devel sqlite-devel openssl-devel \
libcurl-devel oniguruma-devel libzip-devel zlib-devel \
libpng-devel libjpeg-turbo-devel freetype-devel libwebp-devel \
libXpm-devel
wget https://www.php.net/distributions/php-8.2.0.tar.gz
tar -xzvf php-8.2.0.tar.gz
cd php-8.2.0
运行configure脚本,设置编译参数:
./configure \
--prefix=/usr/local/php \
--with-config-file-path=/usr/local/php/etc \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-zip \
--enable-bcmath \
--enable-pcntl \
--enable-ftp \
--enable-exif \
--enable-calendar \
--enable-sockets \
--enable-soap \
--with-openssl \
--with-curl \
--with-zlib \
--with-zip \
--with-mysqli=mysqlnd \
--with-pdo-mysql=mysqlnd \
--with-gettext \
--with-gd \
--with-jpeg \
--with-freetype \
--with-webp \
--with-xpm
注意:根据你的需求调整上述参数,例如需要其他扩展可以添加相应的选项
make -j$(nproc) # 使用多核编译加快速度
sudo make install
sudo cp php.ini-development /usr/local/php/etc/php.ini
sudo cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
sudo cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
sudo nano /usr/local/php/etc/php.ini
常见的修改项包括:
- memory_limit
- upload_max_filesize
- post_max_size
- date.timezone
将PHP添加到系统PATH中:
echo 'export PATH="/usr/local/php/bin:$PATH"' >> ~/.bashrc
source ~/.bashrc
验证安装:
php -v
php -m # 查看已加载的模块
sudo /usr/local/php/sbin/php-fpm
设置开机启动:
# 创建systemd服务文件
sudo tee /etc/systemd/system/php-fpm.service << 'EOF'
[Unit]
Description=The PHP FastCGI Process Manager
After=network.target
[Service]
Type=simple
ExecStart=/usr/local/php/sbin/php-fpm --nodaemonize
ExecReload=/bin/kill -USR2 $MAINPID
[Install]
WantedBy=multi-user.target
EOF
# 启用并启动服务
sudo systemctl daemon-reload
sudo systemctl enable php-fpm
sudo systemctl start php-fpm
如果需要安装额外的扩展,例如Redis:
pecl install redis
echo "extension=redis.so" >> /usr/local/php/etc/php.ini
php.ini-production
而不是php.ini-development
--disable-all
参数最小化安装,然后只启用需要的扩展通过以上步骤,你应该已经成功在Linux系统上编译安装了PHP。