rok*_*ket 5 server php compiling git apache2
我在从 git 构建 PHP 7.3 包时遇到问题。目前我正在使用 Ubuntu 16.04 和 utdatet php 7.0.x。(不可能在我的 VPS 上将 Ubuntu 16.04 升级到 18.04,因为它在启动时崩溃。我只有 Virtuozzo 来调试,我找不到它崩溃的点,所以升级到 18.04 还不是一个选项。)
到目前为止我的步骤:
我已经安装了所有用于构建的程序(git、build Essential、libtool、bison 和 re2c)。
我从 GitHub 克隆了 git:
git clone https://github.com/php/php-src.git
Run Code Online (Sandbox Code Playgroud)
然后我选择了我想要的分支:
git checkout PHP-7.3
Run Code Online (Sandbox Code Playgroud)
然后我跑了:
./buildconf
Run Code Online (Sandbox Code Playgroud)
你下一步怎么做?
我需要以下软件包:
php7.3
libapache2-mod-php7.3
php7.3-mysql
mysql-server
我没有搜索 PPA,因为我想自己做,以便边做边学。
kar*_*rel 11
安装依赖项。
Ubuntu 16.04:
sudo apt install autoconf automake bison build-essential curl flex \
libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
pkg-config re2c sqlite3 zlib1g-dev libonig2 libonig-dev
Run Code Online (Sandbox Code Playgroud)
Ubuntu 18.04
sudo apt install autoconf automake bison build-essential curl flex \
libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
pkg-config re2c sqlite3 zlib1g-dev libonig4 libonig-dev
Run Code Online (Sandbox Code Playgroud)
Ubuntu 20.04
sudo apt install autoconf automake bison build-essential curl flex \
libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline8 \
libreadline-dev libsqlite3-dev libzip-dev libzip5 nginx openssl \
pkg-config re2c sqlite3 zlib1g-dev libonig5 libonig-dev
Run Code Online (Sandbox Code Playgroud)
因此,您不会覆盖系统上任何现有的 PHP 安装,而是将 PHP 安装在您的主目录中。为 PHP 二进制文件创建一个目录。
mkdir -p ~/bin/php7-latest/
Run Code Online (Sandbox Code Playgroud)
从GitHub下载 PHP 7.3 ,解压,然后将目录更改cd为新目录。您也可以从php.net/downloads.php下载 PHP 7.3,安装说明完全相同。通常,这将是下载 PHP 7.3 的首选方式,但我在此答案中使用来自https://github.com/php/的 PHP 7.3,以匹配问题中询问的 PHP 7.3 存档。
配置 PHP。删除您不需要的任何选项(如 MySQL 或 Postgres (--with-pdo-pgsql))
./configure --prefix=$HOME/bin/php-latest \
--enable-mysqlnd \
--with-pdo-mysql \
--with-pdo-mysql=mysqlnd \
--with-pdo-pgsql=/usr/bin/pg_config \
--enable-bcmath \
--enable-fpm \
--with-fpm-user=www-data \
--with-fpm-group=www-data \
--enable-mbstring \
--enable-phpdbg \
--enable-shmop \
--enable-sockets \
--enable-sysvmsg \
--enable-sysvsem \
--enable-sysvshm \
--enable-zip \
--with-libzip=/usr/lib/x86_64-linux-gnu \
--with-zlib \
--with-curl \
--with-pear \
--with-openssl \
--enable-pcntl \
--with-readline
Run Code Online (Sandbox Code Playgroud)
可能您不需要删除任何选项,除非--with-pdo-pgsql=/usr/bin/pg_config未安装 PostgreSQL。如果您不删除特定于未安装包的选项,则此命令将返回一条错误消息,告诉您必须删除哪个选项才能成功运行该命令。
编译二进制文件:
make # wait until make is finished
Run Code Online (Sandbox Code Playgroud)
当 make 完成时,您将看到以下消息:
sudo apt install autoconf automake bison build-essential curl flex \
libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
pkg-config re2c sqlite3 zlib1g-dev libonig2 libonig-dev
Run Code Online (Sandbox Code Playgroud)
警告:make test需要很长时间才能完成,所以不要在电脑繁忙的时候运行它。
sudo apt install autoconf automake bison build-essential curl flex \
libtool libssl-dev libcurl4-openssl-dev libxml2-dev libreadline7 \
libreadline-dev libsqlite3-dev libzip-dev libzip4 nginx openssl \
pkg-config re2c sqlite3 zlib1g-dev libonig4 libonig-dev
Run Code Online (Sandbox Code Playgroud)
将 PHP.ini 文件复制到安装目录
cp php.ini-development ~/bin/php-latest/lib/
Run Code Online (Sandbox Code Playgroud)
重命名两个文件。
cd ~/bin/php-latest/etc/
mv php-fpm.conf.default php-fpm.conf
mv php-fpm.d/www.conf.default php-fpm.d/www.conf
Run Code Online (Sandbox Code Playgroud)
为您的二进制文件创建符号链接。
cd ~/bin
ln -s php-latest/bin/php php
ln -s php-latest/bin/php-cgi php-cgi
ln -s php-latest/bin/php-config php-config
ln -s php-latest/bin/phpize phpize
ln -s php-latest/bin/phar.phar phar
ln -s php-latest/bin/pear pear
ln -s php-latest/bin/phpdbg phpdbg
ln -s php-latest/sbin/php-fpm php-fpm
Run Code Online (Sandbox Code Playgroud)
将您的本地 PHP 链接到 php 命令。您需要注销然后重新登录 php 才能切换到本地版本,而不是从默认的 Ubuntu 存储库中安装的版本。
# add this to .bashrc
if [ -d "$HOME/bin" ] ; then
PATH="$HOME/bin:$PATH"
fi
Run Code Online (Sandbox Code Playgroud)
启动 PHP-FPM
sudo ~/bin/php-latest/sbin/php-fpm
Run Code Online (Sandbox Code Playgroud)
如果您在没有 sudo 的情况下以普通用户身份运行上述命令,它将显示以下通知:
NOTICE: [pool www] 'user' directive is ignored when FPM is not running as root.
NOTICE: [pool www] 'group' directive is ignored when FPM is not running as root.
Run Code Online (Sandbox Code Playgroud)
来源:来自https://github.com/php/php-src.git 的php-src-master 目录中的安装文件包含指向https://php.net/install的链接,这些说明是从该链接中修订的。除了几个小的修订之外,我还添加了有关如何在您的主目录中本地安装 PHP 7.3 而不需要 root 权限的信息。
| 归档时间: |
|
| 查看次数: |
7315 次 |
| 最近记录: |