本文目錄一覽:
- 1、php中fastcgi.conf 配置在哪個文件
- 2、了解PHP-FPM
- 3、win7 64位用fastcgi怎麼配置php
- 4、如何正確配置 Nginx 和 PHP
- 5、如何在虛擬機上搭建php
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-tw/n/152411.html