本文介绍了手动编译安装 PHP 的具体步骤。
GitHub:https://github.com/khs1994-php/builder
修订记录
Debian9 Ubuntu17.04 出现错误请详细查看后边说明(PHP 7.1.9 不会报错了)。出现错误强烈建议使用 https://stackoverflow.com 进行搜索!
有些编译报错,你确实是正确的安装了依赖包,可以通过建立软链接解决
本文随着 PHP 版本升级而更新,一些增加、修改已经在注释中列出,注意查看。
用户与用户组
PHP-FPM 系统默认用户与用户组
Debian:www-data
RedHat: apache
安装依赖包
RedHat
1 | $ yum install gcc \ |
Debian
1 | $ sudo apt install autoconf \ |
编译
1 | $ ./configure --prefix=/usr/local/php \ |
若编译 Apache
模块请添加 --with-apxs2=/usr/local/apache2/bin/apxs
参数。
注意:
Apache
模块方式运行PHP
太古老,请采用新的PHP-FPM
模式!https://www.khs1994.com/php/development/apache-php.html
错误排查
configure: error: no acceptable C compiler found
1 | $ yum install -y gcc gcc-c++ |
configure: error: xml2-config not found. Please check your libxml2 installation.
1 | $ yum install libxml2 libxml2-devel |
configure: error: Cannot find OpenSSL…
1 | $ yum install openssl openssl-devel |
configure: error: png.h not found.
1 | $ yum install libcurl libcurl-devel |
configure: error: freetype-config not found.
1 | $ yum install freetype freetype-devel libjpeg libjpeg-devel libpng libpng-devel |
configure: error: xslt-config not found. Please reinstall the libxslt >= 1.1.0 distribution
1 | $ yum install libxslt libxslt-devel |
Debian 9
具体查看参考链接2
1 | checking for cURL in default path not found |
1 | $ sudo apt install libcurl4-gnutls-dev |
安装
1 | $ make -j "$(nproc)" |
加入环境变量
编辑 ~/.bash_profile
1 | export PATH=/usr/local/php/sbin:/usr/local/php/bin:$PATH |
编辑 /etc/sudoers
注意:必须编辑此文件,否则 sudo 会找不到命令。
1 | Defaults secure_path="/usr/local/php/bin:/usr/local/php/sbin:..." |
升级 pecl
1 | $ sudo pecl update-channels |
复制配置文件
将源文件中的 php.ini-development
复制到安装目录中的 etc
子目录 ,并改名为 php.ini
。
在源文件夹中执行以下命令,复制 systemd
文件。
1 | $ cp sapi/fpm/php-fpm.serviceq /etc/systemd/system/ |
将安装目录中的 etc
子目录中的 php-fpm.conf.default
复制为 php-fpm.conf
。
将安装目录中的 etc/php-fpm.d
子目录中的 www.conf.default
复制为 www.conf
。
systemd
已经在上一步中配置,这里贴出文件内容,便于学习。
1 | # It's not recommended to modify this file in-place, because it |
启动
1 | $ sudo php-fpm |