PHP是一种创建动态交互性站点的强有力的服务器端脚本语言,它是免费高效开源的。本文介绍了在CentOS 7下源码编译安装PHP7.2.0,老夫亲自动手安装,并将安装步骤记录下来,分享给大家。
首先我们需要准备安装所需的依赖包:
# 如果是CentOS系统,运行: yum -y install libxml2 libxml2-devel openssl openssl-devel bzip2 bzip2-devel libcurl libcurl-devel \ libjpeg libjpeg-devel libpng libpng-devel freetype freetype-devel gmp gmp-devel libmcrypt \ libmcrypt-devel readline readline-devel libxslt libxslt-devel icu libicu libicu-devel gcc-c++ # Ubuntu系统中,运行命令: apt-get install build-essential install g++
目前PHP最新稳定版是7.2.0,我们可以到php官网上下载安装包:https://www.php.net/downloads.php
wget -O php-7.2.0.tar.gz https://www.php.net/distributions/php-7.2.0.tar.gz tar -zxvf php-7.2.0.tar.gz cd php-7.2.0
./configure
这一步非常重要,启用需要的扩展模块,并指定php的安装目录等。配置和编译的时间稍长,一般10分钟左右,请耐心等待。
./configure --prefix=/usr/local/php --with-config-file-path=/usr/local/php/etc --enable-fpm \ --with-fpm-user=nginx --with-fpm-group=nginx \ --enable-mysqlnd --with-mysqli=mysqlnd --with-pdo-mysql=mysqlnd --with-iconv-dir \ --with-freetype-dir=/usr/local/freetype --with-jpeg-dir --with-png-dir --with-zlib \ --with-libxml-dir=/usr --enable-xml --disable-rpath --enable-bcmath --enable-shmop --enable-sysvsem \ --enable-inline-optimization --with-curl --enable-mbregex --enable-mbstring --enable-intl \ --enable-pcntl --enable-ftp --with-gd --with-openssl --with-mhash --enable-pcntl --enable-sockets \ --with-xmlrpc --enable-zip --enable-soap --with-gettext --disable-fileinfo --enable-opcache --with-xsl
1. libzip版本过低
configure: error: Please reinstall the libzip distribution 或者 configure: error:system libzip must be upgraded to version >= 0.11
2. 未定义的类型off_t
configure: error: off_t undefined; check your library configuration
off_t 类型是在 头文件 unistd.h中定义的,在32位系统 编译成 long int ,64位系统则编译成 long long int ,这里题主的系统应该是 64位的吧,在进行编译的时候 是默认查找64位的动态链接库,但是默认情况下 centos 的动态链接库配置文件 /etc/ld.so.conf 里并没有加入搜索路径,这个时候需要将 /usr/local/lib64 /usr/lib64 这些针对64位的库文件路径加进去。
这个时候只需要俩行命令即可:
# 添加搜索路径到配置文件 echo '/usr/local/lib64 /usr/local/lib /usr/lib /usr/lib64'>>/etc/ld.so.conf #更新配置 ldconfig -v
(其中ldconfig -v 是用来更新ld的缓存文件 ld.so.cache , 缓存文件的目的是记录动态编译库文件的路径,加快二进制文件运行时的速度)
ld默认搜索路径是 /usr/local/lib /usr/lib
make && make install
在make的时候,可能会报如下错误:
In file included from /root/download/php-7.2.0/ext/zip/php_zip.h:31:0, from /root/download/php-7.2.0/ext/zip/php_zip.c:36: /usr/local/include/zip.h:59:21: fatal error: zipconf.h: No such file or directory #include <zipconf.h> ^compilation terminated. make: *** [ext/zip/php_zip.lo] Error 1 #找不到文件,加zipconf.h软连接 cp /usr/local/lib/libzip/include/zipconf.h /usr/local/include/zipconf.h
cc: Internal error: Killed (program cc1) ...
大体上是因为内存不足,临时使用交换分区来解决
sudo dd if=/dev/zero of=/swapfile bs=64M count=16 sudo mkswap /swapfile sudo swapon /swapfile
编译完成,可以取消交换分区:
sudo swapoff /swapfile sudo rm /swapfile
这个时候我们还在解压后的源码目录,我们把php.ini拷贝到安装目录下的配置文件目录:
cp php.ini-production /usr/local/php/etc/php.ini
将php-fpm控制脚本加入到/etc/init.d/
下,并给予可执行权限:
cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm chmod +x /etc/init.d/php-fpm
修改配置文件:
cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
打开php-fpm.conf文件,加入以下内容:
vim /usr/local/php/etc/php-fpm.conf [global] pid = /usr/local/php/var/run/php-fpm.pid error_log = /usr/local/php/var/log/php-fpm.log log_level = notice #下面配置应该在php-fpm.d目录下的www.conf配置文件中,基本无需修改 [www] listen = /tmp/php-cgi.sock listen.backlog = -1 listen.allowed_clients = 127.0.0.1 listen.owner = www listen.group = www listen.mode = 0666 user = www group = www ;pm = dynamic ;pm.max_children = 20 ;pm.start_servers = 10 ;pm.min_spare_servers = 10 ;pm.max_spare_servers = 20 request_terminate_timeout = 100 request_slowlog_timeout = 0 slowlog = var/log/slow.log
保存即可,具体各项参数的意义我们会在接下来的文章中专门讲解。
PHP的启动、停止和重启通过使用php-fpm命令如下:
/etc/init.d/php-fpm start #启动 /etc/init.d/php-fpm stop #停止 /etc/init.d/php-fpm restart #重启 #开机启动 chkconfig php-fpm on
安装好php后,我们要想在系统中可以直接使用像php -v
这样的命令的话,需要将php加入到环境变量中:
# 一、如果之前未安装过PHP,那就简单如下: vim /etc/profile # 在文档最后,添加: export PATH="/usr/local/php/bin:$PATH" # 保存,退出,然后运行: source /etc/profile # 二、如果之前已经安装过其它版本的PHP,那么就要先删除原版本的php目录,具体操作方法如下: # 先查找php.ini find / -name php.ini # 得出两个ini /usr/local/php/etc/php.ini /etc/php.ini php -i | grep php.ini # 查看PHP加载的是哪个配置文件,这个获取的是系统内的php.ini 的位置。不是网页apache加载的php.ini文件查找一下系统里的PHP目录相关的东西 find / -name php # 这个好像是阿里云默认安装的PHP /usr/bin/php -v # 解决方法:删除 rm -rf /usr/bin/目录下的所有的PHP的东西 # 再环境变量里加上要使用的PHP的路径 # 不报错则成功。
然后运行php -v
就可看到php的版本信息了。
PHP 7.2.0 (cli) (built: May 5 2018 17:43:33) ( NTS ) Copyright (c) 1997-2018 The PHP Group Zend Engine v3.2.0, Copyright (c) 1998-2018 Zend Technologies
回到我们之前的文章:CentOS7使用源码编译安装Nginx。Nginx默认不支持PHP,需要配置好PHP引擎相关设置才行。这里我们先直接修改Nginx.conf配置文件。
vim /usr/local/nginx/conf/nginx.conf
在server模块添加如下配置:
location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/tmp/php-cgi.sock; #这个同 php-fpm 配置中的 listen 值保持一致 fastcgi_index index.php; include fastcgi_params; #这里有可能是fastcgi.conf,具体根据实际情况确定 }
保存好后,重新启动Nginx使配置生效:
/usr/local/nginx/sbin/nginx -s reload
然后在站点目录下,新建文件t.php,添加测试php内容:
<php phpinfo();
浏览器打开网页,如果看到以下内容,那么恭喜你php安装成功!
原文链接:https://www.helloweba.net/server/498.html