php-fpm

比较CGI,FastCGI,PHP-CGI与PHP-FPM的区别

那年仲夏 提交于 2019-12-02 10:42:14
最早的Web服务器,可以简单地响应浏览器发来的HTTP请求,并将存储在服务器上的HTML文件返回给浏览器,也就是静态html。 随着时间的变化,网站也越来越复杂,所以出现动态技术。但是服务器并不能直接运行 php,asp这样的文件,自己不能做,外包给别人吧,但是要与第三做个约定,我给你什么,然后你给我什么,就是握把请求参数发送给你,然后我接收你的处 理结果给客户端。那这个约定就是 common gateway interface,简称cgi 。 (cgi只是接口协议) image.png cgi就像翻译机,将PHP语言给服务器解释,便于相互之间的理解和通讯,最后呈现给浏览器查看 请求的动态页面模型.jpg WEB服务器将根据CGI程序的类型决定数据向CGI程序的传送方式,一般来讲是通过标准输入/输出流和环境变量来与CGI程序间传递数据。 如下图所示: image.png CGI程序通过标准输入(STDIN)和标准输出(STDOUT)来进行输入输出。此外CGI程序还通过环境变量来得到输入,操作系统提供了许 多环境变量,它们定义了程序的执行环境,应用程序可以存取它们。 Web服务器和CGI接口又另外设置了一些环境变量,用来向CGI程序传递一些重要的参 数。CGI的GET方法还通过环境变量QUERY-STRING向CGI程序传递Form中的数据。 下面是一些常用的CGI环境变量: 变量名

OneinStack PHP多版本共存教程

牧云@^-^@ 提交于 2019-12-02 08:42:28
教程基于《 OneinStack 》一键PHP/JAVA安装工具中lnmp模式,很用户希望一个网站运行在php5.4,另一个网站运行在php7下,一台服务器上同时支持多个PHP版本,步骤如下: 1. 安装OneinStack 选择lnmp模式,默认安装php5.4,安装步骤参考:http://oneinstack.com/install/ 选项如下: Install Nginx Do not install Apache Do not install Tomcat Install MySQL-5.6 Install php-5.4 .... 2. 安装php7 service php-fpm stop #后面需要再安装php,需要停止php mv /etc/init.d/php-fpm{,_bk} #后面需要再安装php会覆盖,备份启动脚本 默认php5.4安装路径是/usr/local/php,如果再次安装会提示php已经安装,因此必须修改options.conf的php安装 目录,将php7安装路径设置为/usr/local/php7,修改/root/oneinstack/options.conf: php_install_dir=/usr/local/php7 再次执行./install.sh,选择Install php-7,其余均选择n ,等待ing 3.

正确设置nginx/php-fpm/apache权限 提高网站安全性 防止被挂木马

為{幸葍}努か 提交于 2019-12-02 08:42:16
核心总结: php-fpm/apache 进程所使用的用户,不能是网站文件所有者。 凡是违背这个原则,则不符合最小权限原则。 根据生产环境不断反馈,发现不断有 php 网站被挂木马,绝大部分原因是因为权限设置不合理造成。因为服务器软件,或是 php 程序中存在漏洞都是难免的,在这种情况下,如果能正确设置 Linux 网站目录权限, php 进程权限,那么网站的安全性实际上是可以得到保障的。 那么,造成网站被挂木马的原因是什么? 1.   ftp 连接信息被破解,对这个原因,可行的办法就是使用非常复杂的 FTP 用户名(不要使用常用的用户名),如果是固定作业,可考虑使用 iptables 防火墙限制来源 IP 。但是一些情景下,可能需要使用 VPN 以便远程维护。 即网站维护者需要使用 FTP 修改网站文件时,必须先登录到 IDC 机房的 VPN 服务器上,再进行后续的操作。 2.  网站服务器软件 / 配置 /php 程序存在漏洞,被利用 在讨论这个问题前,先说明文件及进程权限的几个概念 : A. FTP 用户对网站目录具有最大修改权限,那么网站的文件所有者一定属于 FTP,  这是毋庸置疑的 , 否则如何修改文件呢? B. php-fpm/apache/ nginx 进程对网站文件至少需要有读取权限,例如,以下命令即可查看这两个进程所使用的账号: 通过上图,我们可以发现,

nginx+php的配置与原理

梦想的初衷 提交于 2019-12-02 08:29:16
采用nginx+php作为webserver的架构模式,在现如今运用相当广泛。然而第一步需要实现的是如何让nginx正确的调用php。由于nginx调用php并不是如同调用一个静态文件那么直接简单,是需要动态执行php脚本。所以涉及到了对nginx.conf文件的配置。这一步对新手而言一般需要网上查资料,对于一般的熟手而言,也有不少同学并没有搞透彻为何要如此这般配置。本文的主要内容为如何在nginx server中正确配置php调用方法,以及配置的基本原理。 一、nginx+php运行原理: 首先简单的讲一讲原理,目前主流的nginx+php的运行原理如下: 1、nginx的worker进程直接管理每一个请求到nginx的网络请求。 2、对于php而言,由于在整个网络请求的过程中php是一个cgi程序的角色,所以采用名为php-fpm的进程管理程序来对这些被请求的php程序进行管理。php-fpm程序也如同nginx一样,需要监听端口,并且有master和worker进程。worker进程直接管理每一个php进程。 3、关于fastcgi:fastcgi是一种进程管理器,管理cgi进程。市面上有多种实现了fastcgi功能的进程管理器,php-fpm就是其中的一种。再提一点,php-fpm作为一种fast-cgi进程管理服务,会监听端口,一般默认监听9000端口,并且是监听本机

编译安装PHP7

…衆ロ難τιáo~ 提交于 2019-12-02 07:12:54
#按需求自行删减 cc gcc-c++ make cmake automake autoconf gd file bison patch mlocate flex diffutils zlib zlib-devel pcre pcre-devel libjpeg libjpeg-devel libpng libpng-devel libxml2 libxml2-devel freetype freetype-devel glibc glibc-devel glib2 glib2-devel bzip2 bzip2-devel ncurses ncurses-devel curl curl-devel libcurl libcurl-devel e2fsprogs e2fsprogs-devel krb5 krb5-devel openssl openssl-devel openldap openldap-devel openldap-clients openldap-servers openldap-devellibxslt-devel nss_ldap kernel-devel libtool-libs readline-devel gettext-devel libcap-devel php-mcrypt libmcrypt libmcrypt-devel recode

PHP-FPM远程代码执行漏洞(CVE-2019-11043)

寵の児 提交于 2019-12-02 05:36:40
0x00 简介 在长亭科技举办的 Real World CTF 中,国外安全研究员 Andrew Danau 在解决一道 CTF 题目时发现,向目标服务器 URL 发送 %0a 符号时,服务返回异常,疑似存在漏洞。 在使用一些有错误的Nginx配置的情况下,通过恶意构造的数据包,即可让PHP-FPM执行任意代码。 但由于是配置文件的开放性。还请使用 nginx+php-fpm 的服务管理员/运维人员及时做好自查自检工作。 0x01 漏洞详情 由于\n(%0a)的传入导致nginx传递给php-fpm的PATH_INFO为空。 进而导致可以通过FCGI_PUTENV与PHP_VALUE相结合,修改当前的php-fpm进程中的php配置。在特殊构造的配置生效的情况下可以触发任意代码执行。 注:完全复制Nginx官方给出的php-fpm示例配置的用户受到此漏洞影响 示例配置如下: location ~ [^/]\.php(/|$) { ... fastcgi_split_path_info ^(.+?\.php)(/.*)$; fastcgi_param PATH_INFO $fastcgi_path_info; fastcgi_pass php:9000; ... } 0x02 漏洞复现 在vulhub上已经更新了相应的靶场环境: https://github.com/vulhub

Nginx+Squid+php-fpm整合与配置

巧了我就是萌 提交于 2019-12-02 03:55:54
来自Kearney,转载请注明出处。 http://my.oschina.net/kear/blog/80505 很久没自己写技术类的东西了,跟大家分享一下今天整合Nginx、Squid和php-fpm的心得。 整体架构大致如下: Client -> Squid(反向代理) -> Nginx(反向代理) -> php-fpm(Server) 首现呢,版本如下: Linux: x86_64 CentOS release 6.2(Final) Squid cache: 3.1.10 Nginx: Tengine/1.4.0(nginx/1.2.3) php-fpm: PHP 5.4.6(fpm-fcgi) Zend Engine: v2.4.0 在整体架构上,传统有两种模式,一种呢,是 Client -> Squid(反向代理) -> Nginx(反向代理) -> php-fpm(Server) 另一种呢,是 Client -> Nginx(反向代理) -> Squid(反向代理) ->php-fpm(Server) 两种方法各有利弊,具体差别可以在网上查询。简单打个比方,静态图片站适合用第一种,BBS网站适合用第二种。 还有Hybrid,即混合模式,大概的样子是 Client -> Nginx(反向代理) -> Squid(反向代理) -> Nginx(中间层) ->Server

Centos7+Nginx+PHP 基础WEB运行环境手工部署

好久不见. 提交于 2019-12-02 02:37:00
Centos7+nginx+php(php-fpm)基础web运行环境手工部署 准备工作 1.安装编译支持库 yum install -y gcc automake autoconf libtool make yum install -y gcc gcc-c++ yum install -y openldap-devel libicu-devel libpng-devel libjpeg-devel curl-devel openssl-devel libxml2-devel libzip-devel 2.安装PCRE wget ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre/pcre-8.40.tar.gz tar -xzf pcre-8.40.tar.gz -C ./ cd pcre-8.40 ./configure --prefix=/usr/local/pcre make && make install cd .. 3.安装zlib wget http://zlib.net/zlib-1.2.11.tar.gz tar -xzf zlib-1.2.11.tar.gz -C ./ cd zlib-1.2.11 ./configure --prefix=/usr/local/zlib make && make

Ubuntu下安装Naginx, PHP5(及PHP-FPM),MySQL

北城余情 提交于 2019-12-02 00:15:37
环境:ubuntu 12.0.4 LTS nginx(发音"engine x")是一个自由,开放源码,高性能的HTTP server。Nginx以稳定性,丰富的功能集,简单的配置,和低资源消耗而出名。本文将向你展示怎么在ubuntu 12.0.4 LTS 上安装Nginx,php5(及php-fpm),mysql。 一:安装前做个简单的说明 我使用的域名为example.com,ip地址是218.198.177.252。你可以视具体情况更改这些设置。在下文中我将使用root权限安装所需软件,所以请先切换到root用户:sudo su 二:安装MySQL apt-get install mysql-server mysql-client 安装过程会提示你为MySQL root 用户提供一个密码----这个密码对 root@ localhost可用,同时对root@example.com也可用,因此你需要手动为MySQL root用户指定一个密码: New password for the MySQL "root" user: <-- yourrootsqlpassword Repeat password for the MySQL "root" user: <-- yourrootsqlpassword 三:安装Nginx apt-get install nginx 1