好得很程序员自学网
  • 首页
  • 后端语言
    • C#
    • PHP
    • Python
    • java
    • Golang
    • ASP.NET
  • 前端开发
    • Angular
    • react框架
    • LayUi开发
    • javascript
    • HTML与HTML5
    • CSS与CSS3
    • jQuery
    • Bootstrap
    • NodeJS
    • Vue与小程序技术
    • Photoshop
  • 数据库技术
    • MSSQL
    • MYSQL
    • Redis
    • MongoDB
    • Oracle
    • PostgreSQL
    • Sqlite
    • 数据库基础
    • 数据库排错
  • CMS系统
    • HDHCMS
    • WordPress
    • Dedecms
    • PhpCms
    • 帝国CMS
    • ThinkPHP
    • Discuz
    • ZBlog
    • ECSHOP
  • 高手进阶
    • Android技术
    • 正则表达式
    • 数据结构与算法
  • 系统运维
    • Windows
    • apache
    • 服务器排错
    • 网站安全
    • nginx
    • linux系统
    • MacOS
  • 学习教程
    • 前端脚本教程
    • HTML与CSS 教程
    • 脚本语言教程
    • 数据库教程
    • 应用系统教程
  • 新技术
  • 编程导航
    • 区块链
    • IT资讯
    • 设计灵感
    • 建站资源
    • 开发团队
    • 程序社区
    • 图标图库
    • 图形动效
    • IDE环境
    • 在线工具
    • 调试测试
    • Node开发
    • 游戏框架
    • CSS库
    • Jquery插件
    • Js插件
    • Web框架
    • 移动端框架
    • 模块管理
    • 开发社区
    • 在线课堂
    • 框架类库
    • 项目托管
    • 云服务

当前位置:首页>后端语言>PHP
<tfoot draggable='sEl'></tfoot>

phpfpm运行权限 php权限设置如何实现

很多站长朋友们都不太清楚phpfpm运行权限,今天小编就来给大家整理phpfpm运行权限,希望对各位有所帮助,具体内容如下:

本文目录一览: 1、 了解PHP-FPM 2、 php-fpm设置多少合适 3、 如何修改 php-fpm的运行用户 4、 如何修改 php-fpm的运行用户? 5、 ftp怎么设置权限可以让php无法读取其他目录的文 了解PHP-FPM

在服务器上,当我们查看php进程时,全都是php-fpm进程,大家都知道这个就是php的运行环境,那么,它到底是个什么东西呢?

PHP-FPM,就是PHP的FastCGI管理器,用于替换PHP FastCGI的大部分附加功能,在PHP5.3.3后已经成为了PHP的标配。

有小伙伴要问了,FastCGI又是什么鬼?CGI程序又叫做“通用网关接口”,就是让Web服务器和你的应用程序进行交互的一个接口。就像nginx中需要配置的fastcgi_pass,一般我们会使用127.0.0.1:9000或者unix:/tmp/php-cgi.sock来配置这个参数。它的意思就是告诉nginx,过来的请求使用tcp:9000端口的监听程序来处理或者使用unix/socket来处理。它们都是指向的PHP运行程序。

再说得通俗一点,我们运行php脚本用的是

php-fpm就相当于是这个php命令。nginx通过fastcgi_pass来运行php $nginx_root(nginx配置文件中网站根目录root配置)下的index.php。所以,如果你用的是python或者其他什么语言,都可以用它们的cgi程序来让nginx调用。

FastCGI和CGI又有什么不同呢?FastCGI是启动一个socket接口,服务器应用不需要自己去运行php,只需要向这个socket接口提交请求就可以了。

php-fpm在编译php时需要添加--enable-fpm。一些通用的集成安装包如lnmp、phpStudy等都会默认编译并使用php-fpm,毕竟是标配。

上文中说过nginx可以使用127.0.0.1:9000和unix:/tmp/php-cgi.sock这两种方式来调用php-fpm。它们有什么区别呢?

前者,一般带9000端口号的,是tcp形式的调用。也就是php-fpm启动了一个监听进程对9000端口进行监听。它会调起一个tcp/ip服务,nginx在调用的时候会走一次tcp请求流程,也就是3次握手4次挥手,会走到网络七层中的第四层传输层。相对来说这种方式性能会稍差一点,启动php-fpm后使用nestat查看端口中会出现9000端口的占用。

后者,使用的是unix套接字socket服务,通过sock文件来交换信息,性能相对好一些,因为它没有tcp连接过程,也不会有9000端口的占用。

对于高负载大访问量的网站还是推荐使用unix方式,对于普通小网站来说,无所谓使用哪个都可以,tcp方式反而更容易配置和理解,也是php-fpm.conf中默认的监听方式。

php-fpm.conf配置中的listen属性用来配置监听,这里的配置要和nginx中的一致,使用tcp的就监听127.0.0.1:9000,使用unix的就设置成/tmp/php-cgi-56.sock。

以下内容摘自官方文档:

===========

各自媒体平台均可搜索【硬核项目经理】

php-fpm设置多少合适

1 那么,对于我们的服务器,选择哪种执行方式比较好呢?事实上,跟Apache一样,我们运行的PHP程序在执行完成后,或多或少会有内存泄露的问题。这也是为什么开始的时候一个php-fpm进程只占用3M左右内存,运行一段时间后就会上升到20-30M的原因了。所以,动态方式因为会结束掉多余 的进程,可以回收释放一些内存,所以推荐在内存较少的服务器或者VPS上使用。具体最大数量根据 内存/20M 得到。比如说512M的VPS,建议pm.max_spare_servers设置为20。至于pm.min_spare_servers,则建议根据服务器的负载情况来设置,比较合适的值在5~10之间。

2 然后对于比较大内存的服务器来说,设置为静态的话会提高效率。因为频繁开关php-fpm进程也会有时滞,所以内存够大的情况下开静态效果会更好。数量也可以根据 内存/30M 得到。比如说2GB内存的服务器,可以设置为50;4GB内存可以设置为100等

如何修改 php-fpm的运行用户

一,php-fpm的启动参数

#测试php-fpm配置

/usr/local/php/sbin/php-fpm -t

/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf -t

#启动php-fpm

/usr/local/php/sbin/php-fpm

/usr/local/php/sbin/php-fpm -c /usr/local/php/etc/php.ini -y /usr/local/php/etc/php-fpm.conf

#关闭php-fpm

kill -INT `cat /usr/local/php/var/run/php-fpm.pid`

#重启php-fpm

kill -USR2 `cat /usr/local/php/var/run/php-fpm.pid`

二,php-fpm.conf重要参数详解

pid = run/php-fpm.pid

#pid设置,默认在安装目录中的var/run/php-fpm.pid,建议开启

error_log = log/php-fpm.log

#错误日志,默认在安装目录中的var/log/php-fpm.log

log_level = notice

#错误级别. 可用级别为: alert(必须立即处理), error(错误情况), warning(警告情况), notice(一般重要信息), debug(调试信息). 默认: notice.

emergency_restart_threshold = 60

emergency_restart_interval = 60s

#表示在emergency_restart_interval所设值内出现SIGSEGV或者SIGBUS错误的php-cgi进程数如果超过 emergency_restart_threshold个,php-fpm就会优雅重启。这两个选项一般保持默认值。

process_control_timeout = 0

#设置子进程接受主进程复用信号的超时时间. 可用单位: s(秒), m(分), h(小时), 或者 d(天) 默认单位: s(秒). 默认值: 0.

daemonize = yes

#后台执行fpm,默认值为yes,如果为了调试可以改为no。在FPM中,可以使用不同的设置来运行多个进程池。 这些设置可以针对每个进程池单独设置。

listen = 127.0.0.1:9000

#fpm监听端口,即nginx中php处理的地址,一般默认值即可。可用格式为: 'ip:port', 'port', '/path/to/unix/socket'. 每个进程池都需要设置.

listen.backlog = -1

#backlog数,-1表示无限制,由操作系统决定,此行注释掉就行。backlog含义参考:

listen.allowed_clients = 127.0.0.1

#允许访问FastCGI进程的IP,设置any为不限制IP,如果要设置其他主机的nginx也能访问这台FPM进程,listen处要设置成本地可被访问的IP。默认值是any。每个地址是用逗号分隔. 如果没有设置或者为空,则允许任何服务器请求连接

listen.owner = www

listen.group = www

listen.mode = 0666

#unix socket设置选项,如果使用tcp方式访问,这里注释即可。

user = www

group = www

#启动进程的帐户和组

pm = dynamic #对于专用服务器,pm可以设置为static。

#如何控制子进程,选项有static和dynamic。如果选择static,则由pm.max_children指定固定的子进程数。如果选择dynamic,则由下开参数决定:

pm.max_children #,子进程最大数

pm.start_servers #,启动时的进程数

pm.min_spare_servers #,保证空闲进程数最小值,如果空闲进程小于此值,则创建新的子进程

pm.max_spare_servers #,保证空闲进程数最大值,如果空闲进程大于此值,此进行清理

pm.max_requests = 1000

#设置每个子进程重生之前服务的请求数. 对于可能存在内存泄漏的第三方模块来说是非常有用的. 如果设置为 '0' 则一直接受请求. 等同于 PHP_FCGI_MAX_REQUESTS 环境变量. 默认值: 0.

pm.status_path = /status

#FPM状态页面的网址. 如果没有设置, 则无法访问状态页面. 默认值: none. munin监控会使用到

ping.path = /ping

#FPM监控页面的ping网址. 如果没有设置, 则无法访问ping页面. 该页面用于外部检测FPM是否存活并且可以响应请求. 请注意必须以斜线开头 (/)。

ping.response = pong

#用于定义ping请求的返回相应. 返回为 HTTP 200 的 text/plain 格式文本. 默认值: pong.

request_terminate_timeout = 0

#设置单个请求的超时中止时间. 该选项可能会对php.ini设置中的'max_execution_time'因为某些特殊原因没有中止运行的脚本有用. 设置为 '0' 表示 'Off'.当经常出现502错误时可以尝试更改此选项。

request_slowlog_timeout = 10s

#当一个请求该设置的超时时间后,就会将对应的PHP调用堆栈信息完整写入到慢日志中. 设置为 '0' 表示 'Off'

slowlog = log/$pool.log.slow

#慢请求的记录日志,配合request_slowlog_timeout使用

rlimit_files = 1024

#设置文件打开描述符的rlimit限制. 默认值: 系统定义值默认可打开句柄是1024,可使用 ulimit -n查看,ulimit -n 2048修改。

rlimit_core = 0

#设置核心rlimit最大限制值. 可用值: 'unlimited' 、0或者正整数. 默认值: 系统定义值.

chroot =

#启动时的Chroot目录. 所定义的目录需要是绝对路径. 如果没有设置, 则chroot不被使用.

chdir =

#设置启动目录,启动时会自动Chdir到该目录. 所定义的目录需要是绝对路径. 默认值: 当前目录,或者/目录(chroot时)

catch_workers_output = yes

#重定向运行过程中的stdout和stderr到主要的错误日志文件中. 如果没有设置, stdout 和 stderr 将会根据FastCGI的规则被重定向到 /dev/null . 默认值: 空.

如何修改 php-fpm的运行用户?

第一种:一个php-fpm主进程

这种方式比较简单,也只需要一个php-fpm自启动文件。

首先我们查看一下原php-fpm.conf的这个配置文件,分为两个部分,一个是global块,另外一个是自定义的块,配置文件里面称为pool池,默认叫“www”。在global池的上方,有一行注释了的“include=etc/fpm.d/*.conf”配置项,再通过www池的配置,我们可知可以通过不同的池来配置不同的用户,来达到多个用户运行php-fpm的目的,步骤如下:

4、删除前面的global块,或者注释掉。

5、修改[www]为其他,比如你[blog]。

6、配置[blog]池,主要修改两个地方:

6.1:第一处为运行的用户和用户组。

即将

12user = www3group = www4。

修改为

12user=nobody #具体用哪个用户视自己情况而定,我只做个示例3group=nobody4。

6.2:修改监听的端口或者socket:

即将:

12listen = 127.0.0.1:90003。

修改为:

12listen = /var/socket/php-fpm/blog.socket #php-fpm需要自己创建,当然也可以直接放在php-fpm目录下3。

修改成其他端口也是可以的,比如:listen = 127.0.0.1:9001。

7、到主配置文件 php-fpm.conf将“include=…”前面的注释去掉,让它去读取fpm.d目录下的配置文件。

8、到此第一种方案就修改完毕了,重新启动测试一下:

12service php-fpm reload3。

第二种:两个php-fpm主进程。

这种方法需要独立的配置文件和独立的自启动文件:

1、复制一份php-fpm.conf主配置文件。

12cp php-fpm.conf php-fpm-blog.conf3。

2、修改主配置文件。

12vim php-fpm-blog.conf3。

2.1:修改[global]下pid和error_log文件的路径。

修改 pid=run/php-fpm.pid 为 pid=run/php-fpm-blog.pid 。

修改 error_log = /log/php-fpm.log 为 error_log = /log/php-fpm-blog.log。

2.2:修改池的名称[www]为[blog],不过这个可以不用修改了,因为这里和原来的进程是独立的。

2.3:修改用户和用户组。

2.4:监听端口或socket文件。

以上两部可以按照第一种方案进行修改,这里就不再重复。

3、进入/etc/init.d目录,复制一份自启动文件。

12cp php-fpm php-fpm23。

4、修改自启动文件php-fpm2:

4.1:修改配置文件路径。

12php_fpm-CONF=${prefix}/etc/php-fpm.conf3。

为

12php_fpm-CONF=${prefix}/etc/php-fpm-blog.conf3。

这个路径就是刚才的主配置文件。

4.2:修改PID文件路径:

12php_fpm_PID=${prefix}/var/run/php-fpm.pid3。

为:

12php_fpm_PID=${prefix}/var/run/php-fpm-blog.pid3。

这个路径要和主配置文件中的pid路径一致。

5、修改完毕后添加自动启动。

12chkconfig --add php-fpm23chkconfig --level 2345 php-fpm2 on4。

6、启动服务。

ftp怎么设置权限可以让php无法读取其他目录的文

设置php的执行用户权限为只限制读写网站根目录下的文件及文件夹,比如www文件夹是网站根目录,php-fpm用户是执行用户,那么设置php-fpm只能读写www文件夹里面的文件。这样其他的www以外的目录这个用户就没有权限访问了。

关于phpfpm运行权限的介绍到此就结束了,不知道本篇文章是否对您有帮助呢?如果你还想了解更多此类信息,记得收藏关注本站,我们会不定期更新哦。

查看更多关于phpfpm运行权限 php权限设置如何实现的详细内容...

声明:本文来自网络,不代表【好得很程序员自学网】立场,转载请注明出处:http://haodehen.cn/did211488
更新时间:2023-05-03   阅读:45次

上一篇: php与h5的区别 php和h5

下一篇:php对接rfid php易语言

最新资料更新

  • 1.抓取淘宝商品php 抓取淘宝商品风控
  • 2.php语法基础csdn php语言基础
  • 3.phpwsdl调用 php调用php文件
  • 4.php有类似cmap 与php类似的语言
  • 5.php获取监控视频 php采集视频地址
  • 6.字符编码+php 字符编码转换器
  • 7.web安全php Web安全原理分析与实践
  • 8.php瀑布流响应 html 瀑布流
  • 9.php登录网站 php网页登录
  • 10.php脚本在线解密 php解密网站程序源码
  • 11.php提取数组转map php 数组转xml
  • 12.PHP没有前景吗 php现在怎么样
  • 13.php带协议跳转 php跳转函数
  • 14.kohanaphp版本 koo版
  • 15.phpdelete的简单介绍
  • 16.PHP添加日期代码 php年月日时间代码
  • 17.php暂停方法 php 停止执行
  • 18.php求100的质数 php求出1100的素数
  • 19.token验证php Token验证失败异地登陆什么意思
  • 20.如何知道php密码 php确认密码

CopyRight:2016-2025好得很程序员自学网 备案ICP:湘ICP备09009000号-16 http://haodehen.cn
本站资讯不构成任何建议,仅限于个人分享,参考须谨慎!
本网站对有关资料所引致的错误、不确或遗漏,概不负任何法律责任。
本网站刊载的所有内容(包括但不仅限文字、图片、LOGO、音频、视频、软件、程序等)版权归原作者所有。任何单位或个人认为本网站中的内容可能涉嫌侵犯其知识产权或存在不实内容时,请及时通知本站,予以删除。

网站内容来源于网络分享,如有侵权发邮箱到:kenbest@126.com,收到邮件我们会即时下线处理。
网站框架支持:HDHCMS   51LA统计 百度统计
Copyright © 2018-2025 「好得很程序员自学网」
[ SiteMap ]