[英]Permissions to PHP session files
我有一個域domain.com和subdomain sub.domain.com這兩個域具有不同的ftp用戶(user1,user2),它們屬於linux環境中的同一組(用戶組)。 最后,我有一個在兩個域上都使用會話的相同PHP應用程序(一個處於活動狀態,另一個處於測試環境)。
當我不首先訪問sub.domain.com而訪問domain.com時,當我不首先訪問domain.com而訪問sub.domain.com時,將在默認文件夾/ tmp /中創建具有適當權限600和user1:usergroup的PHP會話文件。 .com,將創建一個具有權限600和user2:usergroup的文件。
對於IE而言,所有功能都對所有瀏覽器都很有用(請不要專注於此)。 我發現的是,當我訪問sub.domain.com然后嘗試domain.com時,PHP嘗試讀取相同的會話文件,但沒有權限,並且頁面將無限期加載。 將文件所有權更改為user1可以使domain.com工作,但阻止sub.domain.com工作。
如何使Apache或PHP為會話創建不同的文件或使它們可從兩個域訪問。
PS就像我說的那樣,出於某種奇怪的原因,這種情況僅發生在IE上,而PHP的錯誤消息是:未捕獲的PHP錯誤:session_start()[function.session-start]:open(/ tmp / sess_t1 ...,O_RDWR)失敗:第46行第46行的文件xxx.php中的權限被拒絕(13)是session_start();
感謝您的任何建議。
不知道這是否是解決問題的最佳方法,但是您可以嘗試讓PHP將會話文件保存在每個域的不同目錄中。
看一下session_save_path()文檔。
請記住,必須在初始化會話之前進行設置。
理想情況下,這應該是腳本要做的第一件事。
我只是有同樣的問題。 Apache返回IE7和IE8的會話數據的方式似乎存在問題,但最有可能的原因是IE7和IE8用不正確的方式來聲明他們正在請求會話數據的域。
這是我的情況:
運行帶有兩個域的Apache 1.3,每個域都有自己的用戶帳戶:
Domain: mycompany.com
Session path: /tmp/
Webserver user: mycompanycom
Domain: support.mycompany.com
Session path: /tmp/
Webserver user: nobody
在Firefox / Safari / Chrome正常訪問期間,會發生以下情況:
/tmp/
創建了會話文件,該文件由用戶mycompanycom
擁有。 /tmp/
創建了第二個會話文件,該文件由用戶nobody
擁有。 但是,在訪問IE7和IE8時會發生以下情況:
/tmp/
創建了會話文件,該文件由用戶mycompanycom
擁有。 /tmp/
nobody
用戶創建第二個會話文件,而是由Apache嘗試返回mycompany.com的會話文件。 mycompanycom
擁有,因此以用戶身份運行的Web服務器nobody
無法訪問它。 權限被拒絕。 正如其他人所建議的那樣,該解決方案是在/tmp/
創建一個單獨的目錄,以分隔存儲的用於support.mycompany.com的會話數據:
mkdir /tmp/mycompany
chown nobody:nobody /tmp/mycompany
然后,我將以下內容添加到根Web目錄中的support.mycompany.com的.htaccess
文件中:
php_value session.save_path '/tmp/mycompany'
最后,我刪除了/tmp/
所有現有會話數據,以確保新的會話路徑將立即使用:
rm -f /tmp/sess_*
就是這樣! 現在,IE7和IE8可以正常工作。
我相當確定這個問題與IE7和IE8如何從Apache請求會話數據有關。 他們可能首先向mycompany.com請求會話數據,然后向support.mycompany.com請求會話數據,即使后者是在地址欄中輸入的唯一域名。
您確定IE觸發了此問題嗎?
瀏覽器沒有直接訪問會話文件的權限,只有PHP(HTTPD)進程有權訪問會話文件。
我不明白為什么一個瀏覽器應該在PHP日志中給出與另一個瀏覽器不同的錯誤消息。
我認為您可能正在處理兩個單獨的問題。
一種解決方案是將其添加到每個子域的.htaccess文件中:
php_value session.save_path '/path/to/a/writeable/folder'
然后,確保每個子域都有權寫入其自己的文件夾。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.