fastcgi配置php,fastcgi_cache

本文目錄一覽:

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訪問

原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/152411.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
小藍的頭像小藍
上一篇 2024-11-12 00:57
下一篇 2024-11-12 21:29

相關推薦

  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • PHP怎麼接幣

    想要在自己的網站或應用中接受比特幣等加密貨幣的支付,就需要對該加密貨幣擁有一定的了解,並使用對應的API進行開發。本文將從多個方面詳細闡述如何使用PHP接受加密貨幣的支付。 一、環…

    編程 2025-04-29
  • 使用PHP foreach遍歷有相同屬性的值

    本篇文章將介紹如何使用PHP foreach遍歷具有相同屬性的值,並給出相應的代碼示例。 一、基礎概念 在講解如何使用PHP foreach遍歷有相同屬性的值之前,我們需要先了解幾…

    編程 2025-04-28
  • PHP獲取301跳轉後的地址

    本文將為大家介紹如何使用PHP獲取301跳轉後的地址。301重定向是什麼呢?當我們訪問一個網頁A,但是它已經被遷移到了另一個地址B,此時若服務器端做了301重定向,那麼你的瀏覽器在…

    編程 2025-04-27
  • PHP登錄頁面代碼實現

    本文將從多個方面詳細闡述如何使用PHP編寫一個簡單的登錄頁面。 1. PHP登錄頁面基本架構 在PHP登錄頁面中,需要包含HTML表單,用戶在表單中輸入賬號密碼等信息,提交表單後服…

    編程 2025-04-27
  • PHP與Python的比較

    本文將會對PHP與Python進行比較和對比分析,包括語法特性、優缺點等方面。幫助讀者更好地理解和使用這兩種語言。 一、語法特性 PHP語法特性: <?php // 簡單的P…

    編程 2025-04-27
  • PHP版本管理工具phpenv詳解

    在PHP項目開發過程中,我們可能需要用到不同版本的PHP環境來試驗不同的功能或避免不同版本的兼容性問題。或者我們需要在同一台服務器上同時運行多個不同版本的PHP語言。但是每次手動安…

    編程 2025-04-24
  • PHP數組去重詳解

    一、array_unique函數 array_unique是php中常用的數組去重函數,它基於值來判斷元素是否重複,具體使用方法如下: $array = array(‘a’, ‘b…

    編程 2025-04-24
  • PHP導出Excel文件

    一、PHP導出Excel文件列寬調整 當我們使用PHP導出Excel文件時,有時需要調整單元格的列寬。可以使用PHPExcel類庫中的setWidth方法來設置單元格的列寬。下面是…

    編程 2025-04-24
  • php擴展庫初探

    一、什麼是php擴展庫? PHP擴展庫(PHP extension)是一些用C語言編寫的動態鏈接庫,用於擴展PHP的功能。PHP擴展庫使得PHP可以與各種數據庫系統相連、SMTP、…

    編程 2025-04-23

發表回復

登錄後才能評論