首页 > 编程知识 正文

fastcgi配置php,fastcgi_cache

时间:2024-04-24 11:43:13 阅读:333893 作者:PHKM

本文目录一览:

php中fastcgi.conf 配置在哪个文件

现在的虚拟主机提供的功能很强大,很多主机商都允许客服自定义php.ini。如何自定义php.ini呢,分以下几种情况:

模块方式,需要写入.htaccess文件

suPHP方式,这个直接在用户的根目录放一个php.ini文件就可以了,最简单,也是目前虚拟主机服务商使用最广泛的方式。

今天就来说下FastCGI方式下如何自定义php.ini. 以cPanel主机为例来进行说名,如果是其他的只需要知道对应的目录修改下即可。操作如下:

在 public_html 目录的 .htaccess 文件加入:

AddHandler php-fastcgi .php

Action php-fastcgi /cgi-bin/php.fcgi

建立一个文件 php.fcgi ,内容:

#!/bin/sh

exec /usr/local/cpanel/cgi-sys/php5

上传到 cgi-bin目录,权限设置为 700 ,必须通过 ASCII码上传

新建一个php.ini 文件放在 cgi-bin目录下,在文件中写入需要自定义的内容即可。

如果想自定义php.ini的路径,就把php.fcgi中的内容修改为:

#!/bin/sh

PHPRC=”/home/doczz/public_html”

export PHPRC

exec /usr/local/cpanel/cgi-sys/php5

然后把php.ini文件放在定义的目录下即可。

需要注意的问题:

1.php.fcgi的权限设置为755(如果启用了suEXEc,设置为700即可。)

2.这个文件必须通过ASCII 码上传,不能通过二进制编码上传。

了解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。

以下内容摘自官方文档:

===========

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

win7 64位用fastcgi怎么配置php

?php

$dir=$HTTP_GET_VARS["dir"]; //.......取得上个页面传递来的路径

$file=$HTTP_GET_VARS["file"]; //.......取得传递来的文件名

$url=parse_url($HTTP_REFERER); /*......取得前一页面的URL地址,并将其放入一个数组中*/

if($url[host]!=$HTTP_HOST){echo "要下载本软件请到a href=;东方小屋/a";exit;} /*检查来源网站是不是自己的网站,如果不是,返回“要下载本……”*/

if(empty($dir))$dir="/"; //......如果路径名为空,则为指定根目录

if(empty($file)){echo "未指定要下载的文件!";exit;} /*如果文件名为空,返回“未指定……”*/

$rootdir="文件存放的根目录";//......你的下载路径根目录 

$realurl=$rootdir.$dir; //.......取得你的下载目录

chdir($realurl); //......将当前目录转到下载目录中

if(!file_exists($file)){echo "对不起,此链接已经失效,请在下载页面上向我们报告,谢谢!";exit;} //......测试文件是否存在

$filename=$file; 

//发送文件头信息

header("Cache-control: private"); // fix for IE 

header("Content-Type: application/octet-stream"); 

header("Content-Length: ".filesize($filename)); 

header("Content-Disposition: attachment; filename=$filename"); 

$fp = fopen($filename, 'r'); // 以读取方式打开指定文件

fpassthru($fp); // ** CORRECT ** 以二进制方式读取文件

fclose($fp); // 关闭文件

?

如何正确配置 Nginx 和 PHP

直接贴上代码逐行进行讲解,此处贴出一个能正常启动php脚本的最简nginx vhost配置:

[plain] view plain copy

server {

listen 8011;

server_name test.cn;

location ~ .php?.*$ {

root /share/test;

fastcgi_pass 127.0.0.1:9000;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

}

1、第一个大括号 server{ }:不必多说,代表一个独立的server,

2、listen 8011:代表该server监听8011端口

3、location ~ .php?.*${

}:代表一个能匹配对应uri的location,用于匹配一类uri,并对所匹配的uri请求做自定义的逻辑、配置。这里的location,匹配了所有带.php的uri请求,例如:

4、root /share/test:请求资源根目录,告诉匹配到该location下的uri到/share/teset文件夹下去寻找同名资源。

5、fastcgi_pass 127.0.0.1:9000:这行开始是本文的重点:这行代码的意思是,将进入到该location内的uri请求看做是cgi程序,并将请求发送到9000端口,交由php-fpm处理。

6、fastcgi_param SCRIPT_FILENAME

$document_root$fastcgi_script_name;

:这行配置意思是:动态添加了一行fastcgi配置,配置内容为SCRIPT_FILENAME,告知管理进程,cgi脚本名称。由于我的nginx中只有fastcgi_params文件,没有fastcgi.conf文件,所以要使php-fpm知道SCRIPT_FILENAME的具体值,就必须要动态的添加这行配置。

7、include fastcgi_params; 引入fastcgi配置文件

以上就是最简洁版的nginx启动php脚本的最简配置,当重启nginx之后,在/share/test目录下创建一个xx.php文件,输入?php

echo "hello world"; ?保存,然后在浏览器中访问localhost:8011/xx.php

就可以在网页上显示hello world了。

如何在虚拟机上搭建php

虚拟机是window系统还是 linux系统。

window系统就很简单了,直接下载一个集成环境,就可以运行了

linux 系统就要稍微麻烦点

1. php下载以及安装

下载: wget

解压: tar -zxvf php-7.3.2.tar.gz

进入目录开始编译安装:

./configure --prefix=/opt/soft/php --enable-fpm

下面是直接把常用的扩展安装好,免得后面在一个一个安装(推荐)

./configure --prefix=/opt/soft/php --with-curl --with-mysqli --with-openssl --with-pdo-mysql --enable-fpm

make

sudo make install

设置快捷访问方式: sudo cp /opt/soft/php/bin/php /usr/local/bin/

把php配置文件放在正确的位置

确认正确位置:php -i | grep php.ini

在下载的安装包中将php配置文件移动过来: sudo cp /opt/packages/php-7.3.2/php.ini-production /opt/soft/php/lib/php.ini

ps:以后可以通过 php --ini 查看文件所在位置

2. nginx下载以及安装

和上面php一样的步骤,下载--解压--编译--安装

wget

./configure --prefix=/opt/soft/nginx --sbin-path=/opt/soft/nginx/sbin/nginx --conf-path=/opt/soft/nginx/config/nginx.conf --error-log-path=/opt/soft/nginx/logs/error.log --pid-path=/opt/soft/nginx/logs/nginx.pid --http-log-path=/opt/soft/nginx/logs/access.log --with-http_stub_status_module --with-http_ssl_module

sudo make make install

设置快捷访问方式: sudo cp /opt/soft/nginx/sbin/nginx /usr/local/bin/

简单配置nginx(详细配置后面再重新开文章写),然后浏览器直接访问ip就能访问了(这个时候只能访问html,访问php是直接下载文件)

开启nginx: sudo nginx(sudo nginx -s reload 重启nginx), 查看是否开起nginx: sudo netstat -anp | grep 80(端口号)

3. 配置nginx支持php

nginx不能直接和php通信,需要借助FastCGI(高速地在HTTP服务器和动态脚本语言间通信的接口),需要用到php-fpm(FastCGI Process Manager:FastCGI进程管理器, 他的具体概念可以参照这里搞清楚php-FPM到底是什么),这也是为什么在编译安装php的时候需要带--enable-fpm这个扩展的原因.

I. 启动php-fpm

进入到 /opt/soft/php/etc 这个目录将php-fpm.conf.default改名为php-fpm.conf,编辑他查看最后一行

然后进入最后一行指向php-pm.d目录,将改名成,并编辑成对应账号,我这里是xunan

然后将/opt/soft/php/sbin/php-fpm设置快捷访问方式,并启动php-fpm,也就是执行下面两个命令

sudo cp /opt/soft/php/sbin/php-fpm /usr/local/bin/ sudo php-fpm

ps: 重启php-fpm: 先ps aux | grep php-fpm,然后kill掉对应的进程

II. 配置nginx支持php

具体配置:

location ~ .php$ {

try_files $uri /index.php =404;

fastcgi_split_path_info ^(.+.php)(/.+)$;

fastcgi_pass 127.0.0.1:9000;

fastcgi_index index.php;

fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

include fastcgi_params;

}

按照上面配置完成后,在配置文件的root目录下建立一个index.php,编辑

然后重启nginx(sudo nginx -s reload),在浏览器ip访问

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。