今日有小伙伴找到老季,说想要把aws云ec2服务器WordPress网站环境从php7.3升级到php7.4的版本,我们这里也记录一下这个的更新过程。
服务器情况
无法连接aws的ec2服务器
登录上aws也经历了一些波折,发现登录服务器,老是无法连接。要不就是卡住了一样。之后就没有反应了。

要么就是提示:
———-ERROR——- Unable to start command: invalid uid and gid
毫无办法,按理来说aws不可能会有这种,控制台都无法连接ec2服务器的问题。之后我们终于查到了问题,由于系统安装的是ubuntu,所以我们用终端连接时,需要使用ubuntu用户进行连接,具体如下图所示:

Run As : ubuntu
这就是重点了,如果是centos、debian等发型版用root即可。
之后重新使用”会话管理器”菜单就可以连接了。
已安装的环境bitnami套件
登录上服务器,发现服务器使用的是/opt/bitnami/ctlscript.sh命令,所以断定是bitnami的套件,而官网并没有给出详细的套件,这里我们只能自己编译了。
编译php7.4.33
安装必要的环境包
请先直接切换到root用户,然后使用如下命令进行批量下载并安装必要的包
sudo su //直接回车
wget https://www.php.net/distributions/php-7.4.33.tar.gz
tar -xvf php-7.4.33.tar.gz
apt-get update
apt-get install -y libxml2-dev libssl-dev libcurl4-openssl-dev libpng-dev libjpeg-dev libfreetype6-dev zlib1g-dev libzip-dev libsqlite3-dev libonig-devNo package ‘libxml-2.0’ found
hecking for libxml-2.0 >= 2.7.6… no configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met: No package ‘libxml-2.0’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables LIBXML_CFLAGS and LIBXML_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
但我们已经安装了libxml而且是最新的版本,在终端中指定一下路径:
export PKG_CONFIG_PATH=/usr/lib/x86_64-linux-gnu/pkgconfig
No package ‘sqlite3’ found
configure: error: Package requirements (sqlite3 > 3.7.4) were not met: No package ‘sqlite3’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables SQLITE_CFLAGS and SQLITE_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
apt-get install libsqlite3-devNo package ‘oniguruma’ found
configure: error: Package requirements (oniguruma) were not met: No package ‘oniguruma’ found Consider adjusting the PKG_CONFIG_PATH environment variable if you installed software in a non-standard prefix. Alternatively, you may set the environment variables ONIG_CFLAGS and ONIG_LIBS to avoid the need to call pkg-config. See the pkg-config man page for more details.
apt-get install libonig-dev配置PHP
cd php-7.4.33
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --enable-mbstring --with-curl --with-openssl --with-zlib --enable-fpm --with-fpm-user=www-data --with-fpm-group=www-data --enable-opcache --enable-xml --enable-intl --with-gd --with-jpeg --with-freetype --with-mysqli --with-pdo-mysqlYour PHP installation appears to be missing the MySQL extension which is required by WordPress.
一开始出现了Your PHP installation appears to be missing the MySQL extension which is required by WordPress.错误,是我们没有带上mysql的扩展--with-mysqli --with-pdo-mysql,以上编译时,我们已经带上了。
编译和安装PHP7.4.33
make
sudo make install
配置php.ini
sudo cp php.ini-development /usr/local/php7/etc/php.ini编辑 /usr/local/php7/etc/php.ini
找到mysqli.default_socket及pdo_mysql.default_socket的配置区,将其设置成/opt/bitnami/mysql/tmp/mysql.sock
mysqli.default_socket = "/opt/bitnami/mysql/tmp/mysql.sock"
pdo_mysql.default_socket = "/opt/bitnami/mysql/tmp/mysql.sock"
如不配置则会出现:Error establishing a database connection
导致WordPress的运行php环境找不到mysql的链接方法
配置php-fpm.conf
编辑/usr/local/php7/etc/php-fpm.conf文件
sudo vi /usr/local/php7/etc/php-fpm.conf内容如下:
[global]
pid = /run/php-fpm.pid
error_log = /var/log/php-fpm/error.log
[my_pool]
user = daemon
group = daemon
;listen = 127.0.0.1:9000
listen = /var/run/php-fpm.sock
listen.owner = daemon
listen.group = daemon
pm = dynamic
pm.start_servers = 5
pm.min_spare_servers = 2
pm.max_spare_servers = 8
pm.max_children = 12这里我们使用的用户及用户组都是daemon跟bitnami套件中apache设置的是一样的权限。
检查一下/var/run/这个目录是否存在,不存在则需要创建。
启动php-fpm
/usr/local/php7/sbin/php-fpm可以通过 ps aux | grep php-fpm 命令查看我们的php是否允许成功

如果有/usr/local/php7/etc/php-fpm.conf的配置在运行说明已成功。
配置apache2
修改/opt/bitnami/apache2/conf/php-fpm-apache.conf,修改前记得备份!!!
修改配置前请确保:/usr/local/php7/etc/php-fpm.conf的php-fpm已在运行。
将/opt/bitnami/apache2/conf/php-fpm-apache.conf改为以下内容
<IfDefine USE_PHP_FPM>
<Proxy "unix:/var/run/php-fpm.sock|fcgi://www-fpm" timeout=300>
</Proxy>
<FilesMatch \.php$>
<If "-f %{REQUEST_FILENAME}">
SetHandler "proxy:fcgi://www-fpm"
</If>
</FilesMatch>
</IfDefine>此处Proxy需要跟上面的php-fpm.conf配置的listen一致,否则apache2无法链接到php-fpm。
重启bitnami的apache服务
/opt/bitnami/ctlscript.sh restart apache
检查php版本是否成功
我们在网站目录中新建一个info.php内容如下
<?php phpinfo();
之后通过网址打开 http://域名/info.php 检查一下,php版本是否是7.4.33
错误日志
我们的配置过程中出现了一些未知错误,还好有日志可以查询,下面我们指一下日志位置,有需要的小伙伴可能会用到。
tail -n 20 /opt/bitnami/apache2/logs/error_log至此,教程结束,可能不算十分完整,但大概过程就是这样的。请小伙伴们指正~






