本文目錄一覽:
用php的system調用exe文件時的fastcgi進程問題
exec應該可以的,但是根據命令特徵你可能需要結合使用sleep方法,例如:
exec(‘D:’);
sleep(1);
exec(‘cd D:\\path\\path’, $cmd); //反斜杠要轉義哦
sleep(1);
if (! empty($cmd)) {
//$cmd 保存的是命令執行後的屏幕輸出,針對cd這條命令,如果有輸出肯定是錯誤信息
die($cmd);
}
exec(‘xelatex test.tex’, $cmd);
怎麼樣在php中使用fastcgi解析漏洞及修復方案
(Nginx用戶可以選擇方案一或方案二,IIS用戶請使用方案一)
方案一,修改php.ini文件,將cgi.fix_pathinfo的值設置為0。完成後請重啟PHP和NGINX(IIS)。
方案二,在Nginx配置文件中添加以下代碼:
複製代碼 代碼如下:
if ( $fastcgi_script_name ~ \..*\/.*php ) {
return 403;
}
php以fastCGI的方式運行時文件系統權限問題及解決方法
在IIS7.0上以FastCGI方式配置好PHP運行環境,測試可以正常運行PHP程序後,將PHP程序部署上去,導入程序原來的數據和配置信息。很快就有問題出來啦下面我們就詳細記錄下。
今天準備將一個php
demo放在IIS下運行,網站在IIS下的配置是這樣的:
應用程序池是集成模式下的.net
framework
2.0(2.0或4.0沒什麼關係,因為php以fastCGI的方式在跑),
應用程序池標識配置為IIS內置的NETWORKSERVICE,
使用的認證方式為匿名身份驗證。
打開本地的網站,訪問php頁面,
出現了500錯誤。
好吧,是權限問題,最簡單的解決辦法是把C:UsersAdministratorPhpstormProjectsphpDemo的權限設成Everyone,
並允許完全控制:
重新訪問php頁面,成功了:
上面的方法是夠簡單,但也太不安全了,平時本地搭個demo這樣做沒問題,真正上線的時候,這樣做遲早出問題的。
於是重新設置,把該目錄下的只讀權限賦給NETWRORKSERVICE帳號再試一下
不過問題還是沒有解決,訪問的時候,出現了401錯誤
錯誤信息中包括顯示登錄用戶為匿名,檢查了網站下的身份驗證(再點擊
匿名身份驗證-編輯),原來網站默認情況下,在登錄方法為匿名時,使用的默認登錄用戶為IUSR(就是我們看到的匿名登錄用戶了)
那麼解決辦法就是:
1.
將IUSR設置為C:UsersAdministratorPhpstormProjectsphpDemo的讀權限,類似之前對NETWORKSERVICE的設置。
2.
或選擇使用應用程序池標識即可。
經試驗,方法1與2都成功。
Note:NETWORKSERVICE在IIS7中隸屬於iis_iusers用戶組,之前對NETWORKSERVICE的設置也可以改為對iis_iusers的設置,同樣也可以解決問題,只是權限被進一步放寬了而已。
以上所述就是本文的全部內容了,希望大家能夠喜歡。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/283237.html