眾所周知,在windows下當Apache第一次被安裝為 服務后,它會以用戶“System”(本地系統賬號)運行。如果web服務器的所有資源都在本地系統上,這樣做會問題比較少,但是將會具有很大的安全權限 來影響本地機器,因此千萬不能開啟System帳號的網絡權限!
于是要創建一個新的帳戶來替代這個帳號啟動apache并設置相應的權限:
1.在計算機管理里的本地用戶和組里面創建一個帳戶,例如:apache,密碼設置為apacheuser,加入guests組(如果出現問題,可以賦予user權限);
2.打開開始->管理工具->本地安全策略,在用戶權限分配中選擇“作為服務登陸”,添加apache用戶;
3. 計算機管理里面選擇服務,找到apache2.2,先停止服務,右擊->屬性,選擇登陸,把單選框從本地系統帳戶切換到此帳戶,然后查找選擇 apache,輸入密碼apacheuser,然后點確定(這個時候apache還不能正常啟動,一般情況肯定會報錯:Apache2.2 服務因 1 (0x1) 服務性錯誤而停止。);
4.賦予apache安裝目錄(比如:D:/apache2.2)以及web目錄(比如D: /wwwroot)apache帳號的可讀寫權限,去除各磁盤根目錄除administror與system以外的所有權限,賦予apache安裝目錄所 在的磁盤根目錄apache帳戶的可讀取列目錄權限(我開始覺得沒必要,但后來發現:這是導致上面出錯的關鍵。)
5.啟動apache,一切OK了。
6.php.ini中指定的PHP臨時上傳目錄和session保存目錄,并給予目錄apache完全控制權限,例如:
upload_tmp_dir = "D:/wwwroot/Tmp/uploadtmp/"
session.save_path = "D:/wwwroot/Tmp/sessiontmp/"
7.給予D:/php目錄讀取與運行的權限;
8.給予zend安裝目錄讀取與運行的權限;
9.限制讀取訪問的目錄,修改apache安裝目錄下conf文件夾下的httpd.conf,加上:
php_admin_value open_basedir "D:/wwwroot"
php_admin_value safe_mode On
好了...這下應該基本問題都解決了。突然發現我很落后,網上apache+win的文章好少啊,說明大家都不會把apache用在windows下,我寒啊...以至于今天權限配置花費我好多時間...摸索加整理...
新聞熱點
疑難解答