1.下载源码
当前使用的源码为:
https://github.com/php/php-src/tree/PHP-7.3
2. configure
./configure --prefix=/usr/local/php --with-curl--with-gd --with-gettext --with-kerberos --with-libdir=lib64 --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-xmlrpc --with-xsl --with-zlib --with-bz2 --with-mhash --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-gd-native-ttf --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-sysvshm --enable-xml --enable-zip
配置当中可能会出现找不到库的情况
yum -y install libxml2
yum -y install libxml2-devel
yum -y install openssl
yum -y install openssl-devel
yum -y install curl
yum -y install curl-devel
yum -y install libjpeg
yum -y install libjpeg-devel
yum -y install libpng
yum -y install libpng-devel
yum -y install freetype
yum -y install freetype-devel
yum -y install pcre
yum -y install pcre-devel
yum -y install libxslt
yum -y install libxslt-devel
yum -y install bzip2
yum -y install bzip2-devel
完成以上动作后,还有可能出现libzip,libiconv,libmcrypt等不能找到的错误.
可通过下载源码的方式,进行安装。
3.make
configure没有错误后,可以继续使用make进行编译。
编译过程中可能会出现undefined reference to `libiconv_open’的错误。
此时可以通过make ZEND_EXTRA_LIBS=‘-liconv’,将libiconv加入到链接库当中
4.make install
在make install时可能会出现错误
这是因为在make install时会下载php的doc,找到MakeFile的下载操作,然后将—no-check-certificate 加入wget对应的命令中
然后再执行make install后。没有提示错误,安装成功。
5. 测试
再命令行,输入php,会提示没有该命令。
因为php被安装到了/usr/local/php/bin,目录下,并不在PATH路径下,所以打开~/.bashrc,然后在文件末尾添加export PATH=$PATH:/usr/local/php/bin后,执行source ~/.bashrc,然后再执行php -v
会得到如下信息:
PHP 7.3.0-dev (cli) (built: Nov 8 2018 10:11:31) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.3.0-dev, Copyright (c) 1998-2018 Zend Technologies
说明php安装成功。
6. 配置php
在php的安装目录 /usr/local/php目录下有etc目录,该目录存放了配置文件。
首先cp php-fpm.conf.default php-fpm.conf
在php-fpm.conf文件中会有include /usr/local/php/etc/php-fpm.d/*.conf语句,进入include=/usr/local/php/etc/php-fpm.d/后,会发现存在文件:
www.conf.default
执行cp www.conf.default www.conf
然后打开www.conf
可以看到
listen = 127.0.0.1:9000
;listen = /dev/shm/fpm-cgi.sock (该方式使用unix socket的方式进行监听)
配置,如有需要可修改该配置。
修改
user = nobody
group = nobody
为
user = nginx
group = nginx
然后执行
php-fpm
如果没有出错,则说明php-fpm已经启动成功
7. 配置nginx
打开/etc/nginx/nginx.conf
写入如下内容:
server {
listen 80;
server_name web1.test.com;
charset utf8;
location / {
root /var/www/html;
index index.html index.htm;
}
error_page 404 /404.html;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
#fastcgi_pass unix:/dev/shm/fpm-cgi.sock (该方式需要与php-fpm的配置配合使用)
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME /var/www/html/$fastcgi_script_name;;
include fastcgi_params;
}
}
同时在/var/www/html目录下新增文件
phpinfo.php加入内容
然后重启 nginx。
浏览器打开页面http://ip/phpinfo.php,如果出现形如如下界面
则说明配置成功。