Permissions
php-fpm 的奇怪權限問題,session_start 在某些上失敗,但在其他上有效
好的,我在 ubuntu 12.04 上安裝了 php-fpm/apache/apc,並有一個執行 php 購物車的網站。
我被權限錯誤淹沒了,例如“無法寫入會話數據(文件)。請驗證 session.save_path 的目前設置是否正確”或“PHP 警告:session_start() …..失敗:權限被拒絕(13 ) 在 …”
我注意到 sessiondata 文件夾上有一個有趣的問題,它可能是正在發生的事情的線索。這是 sessiondata 文件夾的 ls -la
-rw-rw-r-- 1 www-data phpsite 816 Aug 29 16:32 sess_r9tfvubu6stg6v918qp4b7tcg0 -rw-rw-r-- 1 phpsite phpsite 816 Aug 29 16:32 sess_t99844p7rk6ldk548lplupv485 -rw-rw-r-- 1 www-data phpsite 864 Aug 29 16:30 sess_tdh221j4p6o3pvupc965h6pl56 -rw-rw-r-- 1 www-data phpsite 816 Aug 29 16:31 sess_tdtpp6he2quk7651tsekrhulr5
現在在我的 apache /etc/apache2/conf.d/php5-fpm 文件上,我有
<FilesMatch ".+\.ph(p[345]?|t|tml)$"> SetHandler application/x-httpd-php </FilesMatch> <FilesMatch ".+\.phps$"> SetHandler application/x-httpd-php-source Order Deny,Allow Deny from all </FilesMatch> <FilesMatch "^\.ph(p[345]?|t|tml|ps)$"> Order Deny,Allow Deny from all </FilesMatch> Action application/x-httpd-php /fcgi-bin/php5-fpm virtual Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm <Location /fcgi-bin/php5-fpm> Order Deny,Allow Deny from All Allow from env=REDIRECT_STATUS </Location> FastCgiExternalServer /fcgi-bin-php5-fpm -appConnTimeout 10 -idle-timeout 300 -socket /tmp/php5-fpm.sock -pass-header Authorization
在我的虛擬主機文件上,我有
<IfModule mod_fastcgi.c> Alias /fcgi-bin/php5-fpm /fcgi-bin-php5-fpm-phpsite FastCgiExternalServer /fcgi-bin-php5-fpm-phpsite -appConnTimeout 10 -idle-timeout 300 -socket /tmp/php5-fpm-phpsite.sock -pass-header Authorization </IfModule>
最後是我的 phpsite 池文件
[phpsite] user = phpsite group = phpsite listen.owner = phpsite listen.group = phpsite listen = /tmp/php5-fpm-phpsite.sock
sessiondata 文件夾的權限是
drw-rwSr--+ 2 phpsite phpsite 2514944 Aug 29 16:46 .
我不明白為什麼有些會話是用 www-data:phpsite 所有權編寫的,而另一些是 phpsite:phpsite 所有權…
我知道我的權限以某種方式搞砸了,但我看不出它們有什麼不正確的地方。我也在網站上收到 fopen 權限錯誤!
有人可以幫幫我嗎?約翰
phpsite 使用者只能更新現有會話 - 它不能創建新會話 - chmod u+x yoursessiondatadirectory - 看起來你已經讓 PHP 作為 Apache 中的一個模組執行了。
我真的沒有充分的理由想用 Apache + php-fpm 執行生產系統:在 Apache 中使用 mod_php(和 pre-fork MPM)。如果您正在執行 nginx、G-Wan、Lighttpd,則使用 php-fpm。