本文主要和大家分享最详细的linux安装php过程,之前写好了nginx的安装配置,后面就是php的安装和mysql的安装,不过时间有限,而且放一篇里也太长,所以都是分开来写,php安装完毕后就是mysql的配置了。
一:检查是否安装了php
1)yum安装检查:yum list installed |grep php
2)rpm安装检查:rpm -qa |grep php
3)自己编译安装的有多种方式查询,例如查找php的执行程序,或者检查进程ps -ef |grep php等方法。
二:检查如果没有安装php,即可准备php安装前的前置软件,用yum install xxxx即可安装,当然不嫌麻烦也可以自己编译安装,这里就不详细说了。
1)zlib以及zlib-devel zlib提供数据压缩的函数库,也是nginx的前置软件,由于zlib需要编译php的zlib扩展,而编译中会需要使用zlib.h这个头文件,头文件在zlib-devel中,因此也需要下载zlib-devel。
2)libxml2以及libxml-devel libxml2是一个c语言的xml程序库,可以简单的对xml进行各种操作,并且支持xpath查询,以及部分支持xslt转换等功能。
3)libxslt以及libxslt-devel 如果不安装libxslt-devel会提示找不到xslt.config文件,xslt是转换xml到其他格式的扩展。
3)openssl以及openssl-devel 安全套接字层密码库
4)jpeg IJG的jpeg库,php的gd库所需。
5)libpng 是c语言写的比较底层的读写png文件的跨平台的库,可以帮助轻松的读写png文件的每一行像素,php的gd库所需。
6)freetype以及freetype-devel 免费开源的且可移植的字体引擎,提供统一的接口访问多种字体格式,这两个都是gd库的依赖软件,所以如果没有安装,或者版本太低,在安装php时设定的是安装gd库则会报错,另外不安装-devel也是会报错的,因为编译扩展的时候会缺少ft2build.h文件,报错如下图。
7)gd gd是php处理图形的扩展库
8)curl,由于我的yum里的版本太低了,所以直接自己编译安装的,安装方式很简单,也就是wget curl下载地址后tar解压,新建/usr/local/curl文件夹,然后进入curl解压后的文件夹里配置./configure --prefix=/usr/local/curl即可,最后make以及make install就安装好了。
注意:xxx-devel是xxx软件的开发包,包含头文件以及静态库甚至源码。
三:php下载安装
1)用wget下载php的tar.gz文件:wget http://br2.php.net/get/php-7.2.2.tar.gz
2)解压tar.gz文件:tar zxvf php-7.2.2.tar.gz
3)新建待会要安装php的文件夹:mkdir /usr/local/php,然后进入解压后的php安装包文件夹里,配置configure:
./configure --prefix=/usr/local/php --with-curl=/usr/local/curl --with-freetype-dir --with-gd --with-gettext --with-iconv-dir --with-kerberos --with-libdir=lib64 --with-libxml-dir --with-mysqli --with-openssl --with-pcre-regex --with-pdo-mysql --with-pdo-sqlite --with-pear --with-png-dir --with-xmlrpc --with-xsl --with-zlib --enable-fpm --enable-bcmath --enable-libxml --enable-inline-optimization --enable-mbregex --enable-mbstring --enable-opcache --enable-pcntl --enable-shmop --enable-soap --enable-sockets --enable-sysvsem --enable-xml --enable-zip
注意:
--prefix=安装目录
--with-使用包名称[=包目录]
--enable-需要激活的功能
四:配置php相关文件
1)配置php.ini,这是php的配置文件:cp /home/myload/php-7.2.2/php.ini-development /usr/local/php/lib/php.ini
2)配置php-fpm.conf,这是php-fpm配置文件:cp /usr/local/php/etc/php-fpm.conf.default /usr/local/php/etc/php-fpm.conf
3)配置www.conf,配置用户的文件:cp etc/php-fpm.d/www.conf.default etc/php-fpm.d/www.conf
4)将php-fpm启动文件复制到init.d文件夹中一份方便启动php:cp -R sbin/php-fpm /etc/init.d/php-fpm
五:启动php,确定是否安装成功
执行命令/etc/init.d/php-fpm即可
查看是否启动:ps -ef |grep php既可以看到php启动了哪些进程
六:安装成功后配置nginx支持php
1)更改php.ini文件,vim /usr/local/php/lib/php.ini
通过查找cgi.fix_pathinfo=1这个配置,并去除注释,并改为cgi.fix_pathinfo=0,这里并不属于nginx支持php配置相关,而是专属于nginx下php的一个安全漏洞,如果这里值为1,用户方可以通过上传图片来上传木马,然后通过url访问该图片地址,并在地址后加入/xxx.php将该图片作为php文件运行,这是只有在nginx里才会存在的问题,apache和iis都没有该问题
以上问题可以直接参看鸟哥的博客,写的相当详细:http://www.laruence.com/2010/05/20/1495.html
2)配置web专用的组和用户
添加www用户组:groupadd www
添加www用户组下的用户www:useradd -g www www
3)更改php-fpm.conf配置
将user=nobody的注释去掉,并将nobody改成上面配置的www用户
将group=nobody的注释去掉,并将nobody改成上面配置的www用户组
最后检查php-fpm.conf最后的include的值是不是正确的www.conf目录地址,如果不正确则换成正确的目录地址。
4)更改www.conf配置
将user=nobody的注释去掉,并将nobody改成上面配置的www用户
将group=nobody的注释去掉,并将nobody改成上面配置的www用户组
5)更改nginx.conf文件 /etc/local/nginx/conf/nginx.conf
将#user=nobody去掉注释并改为user=www
去除 location ~ \.php${...}这段代码的注释,并将fastcgi_param里的/scripts改为$document_root
最后将location / {...}里默认index后面添加上index.php,确保index.php作为默认的首页
6)重启php-fpm和nginx,可以killall php-fpm然后再/etc/init.d/php-pfm即可重启,/usr/local/nginx/sbin/nginx -s stop即可停止nginx,然后执行/usr/local/nginx/sbin/php即可重启。
7)在html目录里随便创建一个php文件,内容是phpinfo();,然后在浏览器中访问该文件地址,看是否得到正确的php相关信息,如果正确显示则配置成功。
七:配合apache支持php,这个后续再添加,to be continue...
相关推荐:
linux安装php 模块--with-mysql --with-mysqli非得需要安装mysql吗
以上是最详细的linux安装php过程的详细内容。更多信息请关注PHP中文网其他相关文章!

PHPSession失效的原因包括配置错误、Cookie问题和Session过期。1.配置错误:检查并设置正确的session.save_path。2.Cookie问题:确保Cookie设置正确。3.Session过期:调整session.gc_maxlifetime值以延长会话时间。

在PHP中调试会话问题的方法包括:1.检查会话是否正确启动;2.验证会话ID的传递;3.检查会话数据的存储和读取;4.查看服务器配置。通过输出会话ID和数据、查看会话文件内容等方法,可以有效诊断和解决会话相关的问题。

多次调用session_start()会导致警告信息和可能的数据覆盖。1)PHP会发出警告,提示session已启动。2)可能导致session数据意外覆盖。3)使用session_status()检查session状态,避免重复调用。

在PHP中配置会话生命周期可以通过设置session.gc_maxlifetime和session.cookie_lifetime来实现。1)session.gc_maxlifetime控制服务器端会话数据的存活时间,2)session.cookie_lifetime控制客户端cookie的生命周期,设置为0时cookie在浏览器关闭时过期。

使用数据库存储会话的主要优势包括持久性、可扩展性和安全性。1.持久性:即使服务器重启,会话数据也能保持不变。2.可扩展性:适用于分布式系统,确保会话数据在多服务器间同步。3.安全性:数据库提供加密存储,保护敏感信息。

在PHP中实现自定义会话处理可以通过实现SessionHandlerInterface接口来完成。具体步骤包括:1)创建实现SessionHandlerInterface的类,如CustomSessionHandler;2)重写接口中的方法(如open,close,read,write,destroy,gc)来定义会话数据的生命周期和存储方式;3)在PHP脚本中注册自定义会话处理器并启动会话。这样可以将数据存储在MySQL、Redis等介质中,提升性能、安全性和可扩展性。

SessionID是网络应用程序中用来跟踪用户会话状态的机制。1.它是一个随机生成的字符串,用于在用户与服务器之间的多次交互中保持用户的身份信息。2.服务器生成并通过cookie或URL参数发送给客户端,帮助在用户的多次请求中识别和关联这些请求。3.生成通常使用随机算法保证唯一性和不可预测性。4.在实际开发中,可以使用内存数据库如Redis来存储session数据,提升性能和安全性。

在无状态环境如API中管理会话可以通过使用JWT或cookies来实现。1.JWT适合无状态和可扩展性,但大数据时体积大。2.Cookies更传统且易实现,但需谨慎配置以确保安全性。


热AI工具

Undresser.AI Undress
人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover
用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool
免费脱衣服图片

Clothoff.io
AI脱衣机

Video Face Swap
使用我们完全免费的人工智能换脸工具轻松在任何视频中换脸!

热门文章

热工具

适用于 Eclipse 的 SAP NetWeaver 服务器适配器
将Eclipse与SAP NetWeaver应用服务器集成。

DVWA
Damn Vulnerable Web App (DVWA) 是一个PHP/MySQL的Web应用程序,非常容易受到攻击。它的主要目标是成为安全专业人员在合法环境中测试自己的技能和工具的辅助工具,帮助Web开发人员更好地理解保护Web应用程序的过程,并帮助教师/学生在课堂环境中教授/学习Web应用程序安全。DVWA的目标是通过简单直接的界面练习一些最常见的Web漏洞,难度各不相同。请注意,该软件中

SublimeText3 Mac版
神级代码编辑软件(SublimeText3)

记事本++7.3.1
好用且免费的代码编辑器

VSCode Windows 64位 下载
微软推出的免费、功能强大的一款IDE编辑器