下载 PHP 源码包
#在官网 https://www.php.net/downloads 找到自己要下载的版本地址:
wget https://www.php.net/distributions/php-7.4.30.tar.gz
#使用 tar 命令解压 PHP
tar -zxvf php-7.4.30.tar.gz
#进入目录
cd php-7.4.30
编译安装
- 配置
#说明:
--prefix 指定PHP安装目录
--with- 开头的配置项是没有安装的配置,该参数表示安装此配置
--without- 开头的配置项是已经安装的配置,该参数表示卸载此配置
--enable- 该参数表示启用此配置
--disable- 该参数表示禁用此配置
2.编译
./configure --prefix=/usr/local/php7 --with-config-file-path=/usr/local/php7/etc --with-config-file-scan-dir=/usr/local/php7/conf.d --with-curl --with-mysqli --with-openssl --with-pdo-mysql --enable-fpm --enable-bcmath --enable-xml --enable-mbstring --enable-sockets
错误处理
# 错误1:
configure: error: Package requirements (libxml-2.0 >= 2.7.6) were not met:
No package 'libxml-2.0' found
# 配置遇到的No package ‘libxml-2.0‘ found,缺失libxml2.0 库,解决方法:
yum -y install libxml2
yum -y install libxml2-devel
# 错误 2:
configure: error: Package requirements (sqlite3 > 3.7.4) were not met:
No package 'sqlite3' found
# ./configure 配置遇到的No package ‘sqlite3‘ found,解决方法:
yum install sqlite-devel
# 错误 3:
configure: error: Package requirements (oniguruma) were not met:
No package 'oniguruma' found
# 原因:oniguruma 是一个处理正则表达式的库,在编译安装 php 时,如果使用 –enable-mbstring 参数, 开启 mbstring 扩展,则会出现这个错误。mbstring 的正则功能需要 oniguruma 的支持,系统中却没有 oniguruma 库
# 解决方法1:
在 ’–enable-mbstring’ 参数后添加 ’–disable-mbregex’ 参数,意为不使用 mbstring 的正则功能,不再需要 oniguruma 库
# 解决方法2: 源码安装 oniguruma 库
wget https://github.com/kkos/oniguruma/releases/download/v6.9.5_rev1/onig-6.9.5-rev1.tar.gz -O onig-6.9.5.tar.gz
tar -
cd onig-6.9.5
./configure --prefix=/usr --libdir=/lib64
make && make install
# 错误 4:
No package 'libpng' found
# 解决方法:
yum install libpng-devel
# 错误 5:
configure: error: Package requirements (libzip >= 0.11 libzip != 1.3.1 libzip != 1.7.0) were not met
# 解决方法:
(1)查看是否有安装过libzip
rpm -q libzip
rpm -q libzip-devel
如果有,卸载它
yum remove libzip-devel libzip
(2)然后从官网下载并编译安装
wget https://libzip.org/download/libzip-1.3.2.tar.gz
tar zxf libzip-1.3.2.tar.gz
cd libzip-1.3.2
./configure
make && make install
export PKG_CONFIG_PATH=/usr/local/lib/pkgconfig/:$PKG_CONFIG_PATH
# 错误 6:
No package 'libcurl' found
# 解决方法:
sudo yum install libcurl-devel
安装
make && make install
# 错误
编译器内部错误:已杀死(程序 cc1)
# 解决方法:
1. sudo dd if=/dev/zero of=/home/swap bs=64M count=16 # of=/home/swap,放置swap的空间; count的大小就是增加的swap空间的大小,64M就是块大小,这里是64MB,所以总共空间就是bs*count=1024MB.
2. sudo mkswap /home/swap # 把刚才空间格式化成swap各式
3. sudo swapon /home/swap # 使刚才创建的swap空间
关闭:
1. sudo swapoff /home/swap
2. sudo rm /home/swap
配置文件
# 修改配置文件
cd /usr/local/php7/etc
cp php-fpm.conf.default php-fpm.conf
cp php-fpm.d/www.conf.default php-fpm.d/www.conf
# 修改pid文件位置
vim php-fpm.conf
# 添加这行
pid = /run/php-fpm.pid
# 创建php-fpm软链接
ln -s /usr/local/php7/sbin/php-fpm /usr/sbin/php-fpm
ln -s /usr/local/php7/bin/php /usr/local/bin/php
# 启动
/usr/sbin/php-fpm
# 关闭
kill -INT `cat /run/php-fpm.pid`
# 重启
kill -USR2 `cat /run/php-fpm.pid`
# 复制配置文件
# 去自己刚开始解压文件夹sapi/fpm中复制init.d.php-fpm 放到/etc/init.d下面并命名为php-fpm
cp /home/Jane/php4.30/sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
# 按解压文件夹复制 php.ini 文件
sudo cp php.ini-production /usr/local/php7/etc/php.ini
cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
# 赋予脚本可执行命令,添加开机自启动
chmod +x /etc/init.d/php-fpm
chkconfig --add php-fpm
chkconfig php-fpm on
#命令
service php-fpm start
service php-fpm stop
service php-fpm restart
service php-fpm status
配置 Nginx 启动 PHP
server {
listen 8082;
location / {
#root 路径配置必须要有,而且必须要写对
root /home/Jane/www/test2;
index index.html index.htm index.php;
}
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
location ~ \.php$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
#SCRIPT_FILENAME用$document_root,而不是具体路径
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
}
问题:File not found.
# 权限问题nginx.conf 里的 user 配置要跟 php-fpm.d/www.conf 一致
nginx.conf 文件:
user phpuser;
php-fpm.d/www.conf 文件:
user = phpuser
group = phpuser
安装 gd 库
# 安装 zlib
wget http://www.zlib.net/zlib-1.2.12.tar.gz
tar zxvf zlib-1.2.12.tar.gz
cd zlib-1.2.12
./configure --prefix=/usr/local/zlib
sudo make && sudo make install
# 安装 libpng
wget http://prdownloads.sourceforge.net/libpng/libpng-1.6.37.tar.gz
tar zxvf libpng-1.6.37.tar.gz
cd libpng-1.6.37
./configure --prefix=/usr/local/libpng
sudo make && sudo make install
# 安装 jpegsrc
wget http://www.ijg.org/files/jpegsrc.v9d.tar.gz
tar zxvf jpegsrc.v9d.tar.gz
cd jpeg-9d/
./configure --prefix=/usr/local/libjpeg --enable-shared
sudo make && sudo make install
# 安装 freetype
wget https://download.savannah.gnu.org/releases/freetype/freetype-2.10.1.tar.gz
tar -xzvf freetype-2.10.1.tar.gz
cd freetype-2.10.1
./configure --prefix=/usr/local/freetype --enable-shared
sudo make && sudo make install
# 进入 php 安装包
cd /usr/local/php7/ext/gd
# 生成 configure 文件
make clean
/usr/local/php7/bin/phpize
# 编译安装
./configure --with-php-config=/usr/local/php7/bin/php-config --with-libdir=/usr/local/lib --with-freetype=/usr/local/freetype --with-jpeg=/usr/local/libjpeg
make && make install
# 遇到错误1:
No package 'libjpeg' found
# 解决:
yum install libjpeg-devel
# 遇到错误2:
No package 'freetype2' found
# 解决:
yum install freetype-devel
# make install 过后,系统会自动生成一个GD.SO文件在下面的目录。
Installing shared extensions: /usr/local/[php](https://uzbox.com/tag/php "Posts tagged with php")/lib/php/extensions/no-debug-non-zts-20190902/
# 修改 php.ini文件,重启PHP服务就可以了
extension=/usr/local/php/lib/php/extensions/no-debug-non-zts-20190902/gd.so
安装完毕!
搭建thinkphp5.1 环境
1.搭建环境
# 使用 composer 安装或者更新 thinkphp,
# 1. Composer 安装
curl -sS https://getcomposer.org/installer | php
mv composer.phar /usr/local/bin/composer
# 2. 设置 Composer 使用使用国内镜像
composer config -g repo.packagist composer https://packagist.phpcomposer.com
# 3. 第一次安装 thinkphp 的话
composer create-project topthink/think=5.1.* tp5
# 4. 已安装过 thinkphp 的话,更新即可
composer update topthink/framework
执行了 thinkphp 更新命令报错 问题1
Your requirements could not be resolved to an installable set of packages.
Problem 1
- Root composer.json requires topthink/framework 5.1.*, found topthink/framework[v5.1.41] in the lock file but not in remote repositories, make sure you avoid updating this package to keep the one from the lock file.
Problem 2
- phpoffice/phpspreadsheet is locked to version 1.16.0 and an update of this package was not requested.
- phpoffice/phpspreadsheet 1.16.0 requires ext-zip * -> it is missing from your system. Install or enable PHP's zip extension.
To enable extensions, verify that they are enabled in your .ini files:
- /usr/local/php7/etc/php.ini
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
Alternatively, you can run Composer with `--ignore-platform-req=ext-zip` to temporarily ignore these required extensions.
解决1
# Problem 1,由于镜像源的问题,更改镜像就好了
composer config -g repo.packagist composer https://packagist.org
# Problem 2,安装 php 的 zip 插件即可
wget http://pecl.php.net/get/zip
tar -xzvf zip
cd zip-1.21.0/
sudo /usr/local/php7/bin/phpize
./configure --with-php-config=/usr/local/php7/bin/php-config --enable-zip
# 编译时报错误 1:configure: error: Please reinstall the libzip distribution
# 解决方法 1:
wget https://nih.at/libzip/libzip-1.2.0.tar.gz
tar -zxvf libzip-1.2.0.tar.gz
cd libzip-1.2.0
./configure
make -j4 && make install
# 编译时报错误 2:fatal error: zipconf.h: No such file or directory
# 解决方法 2:
sudo ln -s /usr/local/lib/libzip/include/zipconf.h /usr/local/include
# 安装
sudo make && sudo make install
# 生成了 zip.so
/usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/zip.so
# 修改 php.ini
sudo vi /usr/local/php7/etc/php.ini
# 增加下面这行
extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/zip.so
# 重启 php
sudo service php-fpm stop
sudo service php-fpm start
问题2
Your requirements could not be resolved to an installable set of packages.
Problem 1
- phpoffice/phpspreadsheet is locked to version 1.16.0 and an update of this package was not requested.
- phpoffice/phpspreadsheet 1.16.0 requires ext-zlib * -> it is missing from your system. Install or enable PHP's zlib extension.
To enable extensions, verify that they are enabled in your .ini files:
- /usr/local/php7/etc/php.ini
You can also run `php --ini` in a terminal to see which files are used by PHP in CLI mode.
解决2
# 安装 zlib 插件
cd /home/Jane/software/php-7.4.30/ext/zlib/
mv config0.m4 config.m4
/usr/local/php7/bin/phpize
sudo ./configure --with-php-config=/usr/local/php7/bin/php-config
sudo make && sudo make install
# 生成了 zlib.so
/usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/zlib.so
# 修改 php.ini
sudo vi /usr/local/php7/etc/php.ini
# 增加下面这行
extension=/usr/local/php7/lib/php/extensions/no-debug-non-zts-20190902/zlib.so
# 重启 php
sudo service php-fpm stop
sudo service php-fpm start
2. 配置文件
在服务器上安装更新好 thinkphp 后,访问地址会报 404 错误
# 修改配置文件
server {
listen 8083;
location / {
root /**/***/php/aos_server/public;
index index.html index.htm index.php;
try_files $uri $uri/ /index.php?s=$uri&$args; # 增加这行
}
proxy_buffer_size 64k;
proxy_buffers 32 32k;
proxy_busy_buffers_size 128k;
location ~ \.php$ {
root /**/***/php/aos_server/public;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(/.*)$; # 配置fastcgi_split_path_info, 让nginx 识别出 thinkPHP 的 pathinfo 模式
fastcgi_param PATH_INFO $fastcgi_path_info;
include fastcgi.conf;
}
}