微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Ubuntu14怎么安装php7扩展

Ubuntu14安装PHP7的方法:1、安装MysqL;2、下载PHP源码“PHP-7.2.27.tar.gz”并解压到root目录下;3、安装编译需要的依赖;4、创建安装目录;5、配置开启PHP-fpm支持即可。

本文操作环境:ubuntu14.04系统,PHP7.2版,Dell G3电脑。

Ubuntu14怎么安装PHP7?

ubuntu14.04安装PHP7.0+版本

解决问题:

系统:

服务器:Linux version 4.4.0-53-generic (buildd@lgw01-18) (gcc version 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.3) ) #74~14.04.1-Ubuntu SMP Fri Dec 2 03:43:31 UTC 2016

安装PHP7.0以上版本:

通过查询,几乎所有的教程都如下步骤
首先添加PHP官方源

$ sudo add-apt-repository ppa:ondrej/PHP

然后更新源

$ sudo apt-get update

然后安装

$ sudo apt-get install PHP7.0 PHP7.0-cli PHP7.0-fpm PHP7.0-gd PHP7.0-json PHP7.0-MysqL PHP7.0-readline

但实际操作下来,无法找到7.0以上的源
错误如下

root@iZuf624uxtr8143n2396iaZ:~# sudo apt-get install PHP7.0 PHP7.0-cli PHP7.0-fpm PHP7.0-gd PHP7.0-json PHP7.0-MysqL PHP7.0-readlineReading package lists... Done
Building dependency tree       
Reading state @R_814_4045@ion... Done
E: Unable to locate package PHP7.0
E: Couldn't find any package by regex 'PHP7.0'
E: Unable to locate package PHP7.0-cli
E: Couldn't find any package by regex 'PHP7.0-cli'E: Unable to locate package PHP7.0-fpm
E: Couldn't find any package by regex 'PHP7.0-fpm'
E: Unable to locate package PHP7.0-gd
E: Couldn't find any package by regex 'PHP7.0-gd'E: Unable to locate package PHP7.0-json
E: Couldn't find any package by regex 'PHP7.0-json'
E: Unable to locate package PHP7.0-MysqL
E: Couldn't find any package by regex 'PHP7.0-MysqL'E: Unable to locate package PHP7.0-readline
E: Couldn't find any package by regex 'PHP7.0-readline'

无奈只能自己下载安装包,手动安装,中间各种踩坑,再此记录一下,方便需要的小伙伴直接拿走,节省时间

使用安装包,安装PHP7.0以上版本:

一、MysqL安装

1、安装MysqL ,安装目录/usr/bin/MysqL 安装步骤略

二、PHP安装
1、下载PHP源码PHP-7.2.27.tar.gz,并解压到/root目录下

$ tar -zxvf /root/PHP-7.2.27.tar.gz -C /root/

2、安装编译需要的依赖

①安装libxml2-dev

$ sudo apt-get update 	 
$ sudo apt-get install libxml2-dev

②安装gcc

$ sudo apt-get install build-essential

③安装依赖库

$ sudo apt-get install openssl
$ sudo apt-get install libssl-dev
$ sudo apt-get install make
$ sudo apt-get install curl
$ sudo apt-get install libcurl4-gnutls-dev
$ sudo apt-get install libfreetype6-dev
$ sudo apt-get install libjpeg-dev
$ sudo apt-get install libpng-dev
$ sudo apt-get install libmcrypt-dev
$ sudo apt-get install libreadline6 libreadline6-dev
$ sudo apt-get install libbz2-dev

④安装apache2-dev,否则无法指定–with-apxs2=/usr/bin/apxs来生成libPHP7.so

sudo apt-get install apache2-dev

3、创建安装目录

$ mkdir /usr/local/PHP

4、切换到解压编译目录

$ cd /root/PHP-7.2.27/

配置开启PHP-fpm支持,开启多线程支持–enable-maintainer-zts,否则无法使用Apache2的Event MPM功能

①执行:

$ ./configure --prefix=/usr/local/PHP --exec-prefix=/usr/local/PHP --with-config-file-path=/usr/local/PHP/etc --with-pdo-MysqL=/usr/bin/MysqL --enable-bcmath --enable-mbstring --with-gettext --enable-fpm --enable-shmop --enable-soap --enable-opcache --with-curl --disable-debug --disable-rpath --enable-inline-optimization --with-bz2 --with-zlib --enable-sockets --enable-sysvsem --enable-sysvshm --enable-pcntl --enable-mbregex --with-mhash --enable-zip --with-pcre-regex --enable-MysqLnd --with-MysqLi=MysqLnd --with-pdo-MysqL=MysqLnd --with-gd --with-jpeg-dir --with-freetype-dir --enable-calendar

②执行:

$ make && make test
You can then email it to qa-reports@lists.PHP.net later.Do you want to send this report Now? [Yns]:

$ make && sudo make install

较长时间等待~~~

③执行以下 :查看版本号

/usr/local/PHP/bin/PHP -v

5、配置PHP-fpm

进入安装目录的etc下,复制PHP-fpm.conf.default到PHP-fpm.conf
进入安装目录的etc/PHP-fpm.d下,复制www.conf.default到www.conf 此文件中可修改fpm的端口号

$ cd /usr/local/PHP/etc
$ cp PHP-fpm.conf.default PHP-fpm.conf

$ cd /usr/local/PHP/etc/PHP-fpm.d
$ cp www.conf.default www.conf
$ vim  /usr/local/PHP/etc/PHP-fpm.d/www.conf

修改 :
user = www-data
group = www-data
Eg:如果www-data用户不存在,那么先添加www-data用户

groupadd www-datauseradd -g www-data www-data

启动PHP-fpm 启动方式一

$ sudo /usr/local/PHP/sbin/PHP-fpm

6、将PHP-fpm添加至init.d中

$ /usr/local/PHP/etc
$ Vim /usr/local/PHP/etc

编辑 PHP-fpm.conf 文件,将 ;pid = run/PHP-fpm.pid 前面的分号去掉 关闭fpm服务,执行:

$ killall PHP-fpm

进入目录(该目录为PHP源码包解压后的目录),找到 init.d.PHP-fpm 文件

$ cd /root/PHP-7.2.27/sapi/fpm/

将该文件复制到 /etc/init.d 目录下并改名为 PHP-fpm

$ cp init.d.PHP-fpm /etc/init.d/PHP-fpm

添加权限:

chmod +x /etc/init.d/PHP-fpm 
chkconfig --add PHP-fpm
chkconfig PHP-fpm on

启动PHP-fpm 启动方式二:

$ sudo /etc/init.d/PHP-fpm start

启动PHP-fpm 启动方式三:

$ service PHP-fpm start

fpm认使用9000端口号,
lsof -i:9000查看详情

三、服务器配置
1、apache2配置方案

安装配置忽略

2、 Nginx配置方案

安装Nginx sudo apt-get install Nginx Nginx指向fpm进程管理器

Eg:

server {
        listen       80;
        server_name  ip地址或者域名;
        
		root /home/cms/PHPProject/;
        
		location / {
			index index.html index.htm index.PHP;
			if (!-e $request_filename) {
			   rewrite  ^(.*)$  /index.PHP?s=/$1  last;
			   break;
			}
		}
		
		location ~ \.PHP(.*)$ {
			fastcgi_pass  127.0.0.1:9000;
			fastcgi_index index.PHP;
			fastcgi_split_path_info ^((?U).+\.PHP)(/?.+)$;
			fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
			fastcgi_param PATH_INFO $fastcgi_path_info;
			fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
			include       fastcgi_params;
		}
	
        access_log  /var/log/Nginx/cms.access.log;
        error_log  /var/log/Nginx/cms.error.log  info;}

将项目放入/home/cms/PHPProject/ 下
将runtime设置权限

$ chmod +x /home/cms/PHPProject/runtime/

启动Nginx

$ /etc/Nginx Nginx

访问地址 ip/域名

四、其它注意点

1、runtime下模板文件权限导致系统无法访问问题

日志在/home/cms/prod/runtime/目录下
注意数据库连接的端口号
注意cache文件的读写状态
chmod -R 777 /home/cms/PHPProject/runtime/

2、lunix服务器PHP7.0+环境无法指向PHP.ini文件问题,无法调整上传文件大小问题

通过PHPinfo()查看PHP基本信息,发现未指定Loaded Configuration File
通过将PHP-fpm 指定到日志中查看strace /usr/local/PHP/sbin/PHP-fpm -i 2>1.log
将cp /usr/local/PHP/lib/PHP.ini /usr/local/PHP/etc/PHP.ini 拷贝到指定目录下

上传仍最大限制为1M,暂时未解决提升上传最大限制问题 解决方法待补充

3、2020-04-27问题修复上传大小限制问题

通过问题排查,发现是Nginx文件上传配置太小导致:
通过查看var/logs/Nginx中的错误文件,会有错误如下

recv() Failed (104: Connection reset by peer) while waiting for
request

修正:Nginx.conf中调整参数

client_header_buffer_size 64k;
	large_client_header_buffers 4 64k;
	client_body_buffer_size 20m;
	fastcgi_buffer_size 128k;
	fastcgi_buffers 4 128k;
    fastcgi_busy_buffers_size 256k;
	fastcgi_connect_timeout 600;
	fastcgi_send_timeout 600;
	fastcgi_read_timeout 600;
	
	proxy_buffer_size 64k;
	proxy_buffers 4 128k;
	proxy_busy_buffers_size 256k;
	proxy_connect_timeout 600s;
	proxy_send_timeout 1200;
	proxy_read_timeout 1200;

重启Nginx后,图片上传,发现仍然报错,打开PHP日志,发现报错
[ error ] [2]mkdir(): Permission denied[/home/biotool/cms/prod/thinkPHP/library/think/File.PHP:160]
记住,凡是遇到此类问题都是无权限导致。
执行:

chmod -R 777 /home/cms/prod/public/`

超过1M大图片上传成功

4、服务器邮件发送失败,openssl未指定问题

4.1、我的源码在 /root/PHP-7.2.27 ,安装位置在 /usr/local/PHPPHP.ini 在/ usr/local/PHP/lib 下。如果没有PHP.ini需要把源码中的配置文件 PHP.ini-development 或PHP.ini-production改名成PHP.ini并放在lib下。
4.2、进入openssl的扩展目录 :

cd /root/PHP-7.2.27/ext/openssl

3.3、运行PHPize

/usr/local/PHP7/bin/PHPize

执行后,发现错误 无法找到config.m4 ,config0.m4就是config.m4。直接重命名

mv config0.m4 config.m4

执行后若报

Cannot find autoconf. Please check your autoconf installation and the
$PHP_AUTOCONF environment variable. Then, rerun this script.

执行: apt install autoconf

3.4、执行安装

./configure --with-openssl --with-PHP-config=/usr/local/PHP7/bin/PHP-config 
make&&make install

3.5、过程中可能出现libssl找不到,执行下面的命令再重新执行3.4对应的执行安装

yum install openssl 
yum install openssl-devel

3.6、执行安装后,会提示在某个目录生成.so文件,我生成的位置在

/usr/local/PHP/lib/PHP/extensions/no-debug-non-zts-20151012/

3.7、打开etc/ PHP.ini

vim /usr/local/PHP/etc/PHP.ini

添加下面两句话

extension_dir =/usr/local/PHP/lib/PHP/extensions/no-debug-non-zts-20151012/
extension=openssl.so

3.8、重启PHP即可。

killall PHP-fpm
/usr/local/PHP/sbin/PHP-fpm

4、切换域名方式
4.1登录中心节点,将xxx.net域名对应的代理转发地址修改为: http://ip/
4.2登录应用服务器,server_name中添加ip
注:此处使用内网地址,可提升跨服务之间的访问速度(带宽20M)
配置成功后,访问xxx.net,网站切换成功,且访问速度比IP直接访问快

推荐学习:《PHP教程

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐