與 Apache 不同,Nginx 不包含本地 PHP 處理,所以我們必須安裝PHP-FPM(FastCGI 流程管理器)。
Step1:安裝 php
首先透過指令安裝 php,
sudo apt-get install php-fpm php-mysqlnd php-mbstring php-json
這邊沒有指定版本的話就會安裝最新的版本,我後面還有安裝 php-mysqlnd、php-mbsgring 和 php-json 是其他的 php 套件。
安裝後可以用以下指令檢查 php 版本:
php -v
成功的話應該可以看到類似以下的內容:
PHP 8.1.2 (cli) (built: Jul 21 2022 12:10:37) (NTS) Copyright (c) The PHP Group Zend Engine v4.1.2, Copyright (c) Zend Technologies with Zend OPcache v8.1.2, Copyright (c), by Zend Technologies
接著透過以下指令列出 php 的相關內容:
ls /var/run/php/
會得到以下的結果:
php8.1-fpm.pid php8.1-fpm.sock php-fpm.sock
Step2:為 NGINX 配置 php
接著要替 NGINX 配置 php,我們使用 nano 來編輯文件。
sudo nano /etc/nginx/sites-available/default
優先使用 index.php
鍵盤按下 ctrl + w 搜尋 index.html
將 index.php
添加在 index.html
之前,這樣預設文件將以 index.php
視為最優先順位,index.html
就會變到次一順位。
修改後的內容會像這樣:
index index.php index.html index.htm index.nginx-debian.html;
檢查伺服器名稱
按下 ctrl + w 搜尋 server_name
在此處輸入服務器的 IP,如果有 domain name,則輸入 domain name。
server_name YOUR_DOMAIN_OR_IP_HERE;
指定由 php 來執行 php script
按下 ctrl + w 搜尋 location ~ \.php
這邊把一些 # 拿掉,會像這樣
location ~ \.php$ { include snippets/fastcgi-php.conf; # # # With php-fpm (or other unix sockets): fastcgi_pass unix:/var/run/php/php8.1-fpm.sock; # # With php-cgi (or other tcp sockets): # fastcgi_pass 127.0.0.1:9000; }
要注意的是 /var/run/php/php8.1-fpm.sock 跟你的 php 版本有關,可以用先前提到的 ls /var/run/php/
確認版本。
接著存檔,按下 ctrl + x 然後按下 y 跟 Enter
Step3:重啟 NGINX 服務
檢查配置文件,確保語法沒有錯誤
sudo nginx -t
沒有錯誤的話會顯示以下內容:
nginx: the configuration file /etc/nginx/nginx.conf syntax is ok nginx: configuration file /etc/nginx/nginx.conf test is successful
沒有問題的話就可以重啟 NGINX 了
udo service nginx restart
Step4:測試 php
以上都完成的話,就可以在你放網頁的資料夾,預設是 /var/www/html/
建立一個檔案 info.php,並在裡面放上以下的 code
<?php phpinfo();
接著連到你的網頁 沒有設的 domain 的話應該會是 主機IP/info.php。
如果可以看到內容就的代表設定完成了,記得要把 info.php 刪掉,不然裡面有些資訊被知道了會有安全性上的問題。