使用TP5開(kāi)發(fā)了一個(gè)基本的API的提供網(wǎng)站祸穷,用做一個(gè)DEMO的測(cè)試性穿,這是上傳至服務(wù)器的一些小坑的記錄。
首先是權(quán)限問(wèn)題雷滚,對(duì)于Runtime文件夾無(wú)法讀寫(xiě)需曾,TP保存無(wú)權(quán)限,好解決祈远,因?yàn)槭菧y(cè)試環(huán)境直接:
chmod -R 777
胯舷,解決。第二個(gè)問(wèn)題是因?yàn)锳PI的方便性和安全性绊含,寫(xiě)代碼的時(shí)候開(kāi)啟了強(qiáng)制模式,在Route中定義的路由:
'url_route_on' => true,
'url_route_must' => true,
導(dǎo)致線上的Nginx只能進(jìn)入主頁(yè)炊汹,所有的JQuery請(qǐng)求和超鏈都已經(jīng)失效躬充。但是對(duì)于domain/index.php/module/controller/action
這樣的訪問(wèn)方式是可行的。本地開(kāi)發(fā)環(huán)境是Apache讨便,并沒(méi)有這個(gè)問(wèn)題充甚,所以在本地切換成了Nginx,修改合適的rewrite和php-PathInfo霸褒,具體配置代碼如下:
server {
listen 81;
server_name wxapi.com;
set $root 'E:/PHP/WX_demoAPI/public';
root $root;
index index.php index.html index.htm;
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
location ~ \.php(.*)$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_split_path_info ^((?U).+\.php)(/?.+)$;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
include fastcgi_params;
}
location /{
if ( !-e $request_filename) {
rewrite ^(.*)$ /index.php/$1 last;
break;
}
}
location ~ .*\.(gif|jpg|jpeg|bmp|png|ico|txt|js|css)$
{
root $root;
}
}
這樣配置伴找,本地就沒(méi)有問(wèn)題了。
- 但是上線改配置的時(shí)候废菱,問(wèn)題又出現(xiàn)了技矮,線上使用的是lnmp一鍵安裝包,PHP進(jìn)程sock進(jìn)行訪問(wèn)時(shí)權(quán)限問(wèn)題殊轴,也不敢在給用戶提權(quán)衰倦,于是直接修改nginx的pathinfo支持就可以了。通過(guò)更改
conf/enable-php.conf
進(jìn)行對(duì)于PHP-PathInfo的支持旁理。
原來(lái)的配置如下圖:
Paste_Image.png
對(duì)于一鍵安裝包已經(jīng)提供了pathinfo的配置樊零,更改后的代碼(錯(cuò)誤方式,備注已改正):
這里出現(xiàn)了一個(gè)錯(cuò)誤孽文,是在之后發(fā)現(xiàn)的驻襟,其實(shí)不應(yīng)當(dāng)更改enable-php而是在vhost引入enable-php-pathinfo即可以完成。即芋哭,修改對(duì)應(yīng)虛擬主機(jī)的配置文件將include enable-php.conf;替換為include enable-php-pathinfo.conf;
lnmp restart
完美解決沉衣。