導航:首頁 > 編程語言 > nginx怎麼訪問php

nginx怎麼訪問php

發布時間:2022-07-03 17:53:24

『壹』 一台機linux器裝nginx一台裝php,怎麼能夠用nginx訪問php頁面

nginx通過fastcgi模式調用另一台的php解釋器,然後將php程序執行後的結果傳給nginx,nginx再輸出就可以了

『貳』 nginx PHP文件不能正常訪問.

一般nginx默認配置中會是這個樣子的。這里有一個SCRIPT_FILENAME變數,但是fastcgi_params這個文件中是不包含該變數的,改變數的定義實際上是在fastcgi.conf文件中。

實際上可以把配置修改成如下的配置。

location~.php${
root/usr/share/nginx/html;
fastcgi_pass127.0.0.1:9000;
fastcgi_indexindex.php;
fastcgi_intercept_errorson;
includefast_cgi.conf;

#可以增加rewrite,也可以不增加。
}

按如上的配置,如果訪問127.0.0.1:9000/a.php,則實際上根據root指令和fast_cgi.conf配置,nginx會通過fast_pass指令訪問/usr/share/nginx/html/a.php這個文件。

記得用root指令,指定站點的文檔根路徑。

『叄』 nginx 只讓php入口文件訪問,其他php文件禁止直接訪問

你用的系統是微擎嗎?

正常來說,除了這兩個php文件,和回調用的介面外,其它php都是不能直接訪問的,文件頭有常量判斷,未定義就退出了。

所以你的系統有上傳漏洞,應該檢查是哪裡出了問題,並去修復一下。可以從以下幾點著手:

  1. 上傳許可權僅提供給已登錄會員,在上傳介面中判斷未登錄狀態的,直接返回錯誤信息

  2. 上傳文件類型限制,如果需要的是圖片,嚴格限制圖片類型,並做圖片規格檢測(gd庫就可以處理),不符合的不保存文件

  3. 文件名處理,不要使用客戶端上傳的文件名保存,而是根據規則 生成一個隨機的名字保存

  4. 上傳頻率限制(根據會員限制),比如,一個小時內限制上傳5張,一天限制100張,可以有效防止黑客利用上傳介面填充垃圾文件到你的伺服器

  5. 如果可行,對上傳文件做一個臨時機制,如上傳的文件先放到臨時文件夾,資料保存的時候,把文件處理一下,移動到正常的附件目錄。這樣就可以定期清理臨時文件夾,防止上傳後沒使用的文件過多佔用伺服器空間。

    不過這個功能改起來會復雜一點,要處理所有使用到上傳功能的介面。

以上幾點處理好,被上傳可執行文件的問題基本上可以杜絕了

而你的解決方案,是只治標不治本的方案

『肆』 nginx怎麼調用php封裝好的方法

使用nginx+php一鍵安裝包phpfind或phpstudy,超級方便,純中文綠色解壓即可。自動配好php+nginx。帶控制面板的。phpfind大小隻有16m

『伍』 怎麼在nginx中運行php文件

nginx中不能直接運行php文件,只能通過調用外部CGI處理器運行php文件。php的CGI處理器在Linux中常用的是 php-fpm。在win中就只能是 php-cgi.exe 了。相關CGI的知識請網路,可以使用'nginx CGI'關鍵字進行查詢。

『陸』 雲伺服器如何配置nginx支持php

[root@redhat7 ~]# wget http://am1.php.net/get/php-7.1.2.tar.gz/from/this/mirror
[root@redhat7 ~]# tar xzvf php-7.1.2.tar.gz
[root@redhat7 ~]# cd php-7.1.2/
[root@redhat7 ~]# ./configure --prefix=/usr/local/php --enable-fpm
[root@redhat7 php-7.1.2]# make&&make install
查看是否成功編譯安裝PHP
[root@redhat7 php-7.1.2]# php -v
PHP 7.1.2 (fpm-fcgi) (built: Apr 14 2017 20:21:53)
Copyright (c) 1997-2017 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2017 Zend Technologies

編譯安裝完成後PHP不具備配置文件php.ini,此時只需復制php.ini-proction到 /usr/local/lib/php.ini即可,php.ini文件一般在/usr/local/lib/和/etc目錄下

[root@localhost php-7.1.2]# cp php.ini-proction /usr/local/lib/php.ini
[root@redhat7 php]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 20:59:49] ERROR: failed to open configuration file '/usr/local/php/etc/php-fpm.conf': No such file or directory (2)
[14-Apr-2017 20:59:49] ERROR: failed to load configuration file '/usr/local/php/etc/php-fpm.conf'
[14-Apr-2017 20:59:49] ERROR: FPM initialization failed
啟動php-fpm發現缺乏配置文件/usr/local/php/etc/php-fpm.conf
此時只需復制php-fpm的配置文件在安裝php時提供的配置文件的模版/usr/local/php/etc/php-fpm.conf.default到相應/usr/local/php/etc/php-fpm.conf即可

[root@redhat7 etc]# /usr/local/php/sbin/php-fpm
[14-Apr-2017 21:14:32] WARNING: Nothing matches the include pattern '/usr/local/php/etc/php-fpm.d/﹡.conf' from /usr/local/php/etc/php-fpm.conf at line 125.
[14-Apr-2017 21:14:32] ERROR: No pool defined. at least one pool section must be specified in config file
[14-Apr-2017 21:14:32] ERROR: failed to post process the configuration
[14-Apr-2017 21:14:32] ERROR: FPM initialization failed

[root@redhat7 etc]# cp php-fpm.conf.default /usr/local/php/etc/php-fpm.conf

[root@redhat7 etc]# cp /usr/local/php/etc/php-fpm.d/www.conf.default /usr/local/php/etc/php-fpm.d/www.conf
[root@redhat7 etc]# /etc/init.d/php-fpm
[14-Apr-2017 21:23:02] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:23:02] ERROR: FPM initialization failed
[root@redhat7 etc]# netstat -nldp|grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# cp sapi/fpm/init.d.php-fpm /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# chmod a+x /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# ll /etc/init.d/php-fpm
-rwxr-xr-x 1 root root 2401 4月 14 21:26 /etc/init.d/php-fpm
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm [14-Apr-2017 21:28:09] ERROR: unable to bind listening socket for address '127.0.0.1:9000': Address already in use (98)
[14-Apr-2017 21:28:09] ERROR: FPM initialization failed
failed
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
tcp 0 0 127.0.0.1:9000 0.0.0.0:* LISTEN 3721/php-fpm: maste
[root@redhat7 php-7.1.2]# kill 3721
[root@redhat7 php-7.1.2]# netstat -nldp |grep 9000
[root@redhat7 php-7.1.2]# /etc/init.d/php-fpm start
Starting php-fpm done
[root@redhat7 php-7.1.2]# service php-fpm status
php-fpm (pid 3927) is running...
[root@redhat7 php-7.1.2]# chkconfig --add php-fpm
[root@redhat7 php-7.1.2]# chkconfig php-fpm --level 345 on

配置nginx支持PHP
修改nginx的配置文件,支持php文件的解析,找到location的添加位置,在後面添加下面這個location
location ~ .php$ {
root /usr/share/nginx/html; #指定php的根目錄
fastcgi_pass 127.0.0.1:9000;#php-fpm的默認埠是9000
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}

『柒』 如何nginx啟動php伺服器

安裝
PHP

nginx
後,無法解析
PHP
文件。
其中,PHP

nginx
的編譯安裝
configure
如下:
#
PHP
5.3.9
./configure
--prefix=/usr/local/php
--
enable-fpm
#
nginx
1.0.11
./configure
--prefix=usr/local/nginx
#
成功安裝後,創建
php-fpm.conf
配置文件,刪除
nginx.conf
中「pass
the
PHP
scripts
to
FastCGI
server
listening
on
127.0.0.1:9000」部分的注釋
cd
/usr/local/php/etc
mv
php-fpm.conf.default
php-fpm.conf
vi
/usr/local/nginx/conf/nginx.conf
#
刪除如下部分的注釋,保存退出

『捌』 如何正確配置 Nginx 和 PHP

直接貼上代碼逐行進行講解,此處貼出一個能正常啟動php腳本的最簡nginx vhost配置:

[plain] view plain
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請求,例如:http://192.168.244.128:8011/test.php/asdasd
http://192.168.244.128:8011/index.php等

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

『玖』 請問磚家,nginx怎麼和php交互

nginx和php交互是通過fastcgi模塊來實現的。fastcgi在nginx中是作為一個upstream實現的。可以使用如下的配置實現nginx和php的交互,從而把nginx接收到的請求轉發給php。

fastcgi_passunix:/home/wangwei/php/var/php-cgi.sock;
閱讀全文

與nginx怎麼訪問php相關的資料

熱點內容
app加拿大pc怎麼操控的 瀏覽:698
光影app蘋果怎麼下載不了 瀏覽:971
php會員注冊代碼 瀏覽:511
csgo如何用128tick伺服器 瀏覽:571
百度網度怎麼解壓 瀏覽:946
windowsopencv源碼 瀏覽:945
origin平滑演算法 瀏覽:875
unity程序員簡歷 瀏覽:63
單片機ifelse 瀏覽:695
如何理解php面向對象 瀏覽:96
macword轉pdf 瀏覽:848
python列表求交集 瀏覽:874
解壓包如何轉音頻 瀏覽:447
機明自動編程軟體源碼 瀏覽:326
php埠號設置 瀏覽:541
phperegreplace 瀏覽:320
androidgridview翻頁 瀏覽:537
ssh協議編程 瀏覽:635
如何開我的世界電腦伺服器地址 瀏覽:861
玄關pdf 瀏覽:609