为什么PHP会话文件是由不同的用户根据访问的页面编写的?

时间:2015-12-09 12:37:04

标签: php session file-permissions

我有一个使用PHP会话的网站。

PHP可以编写一次会话文件。但是当我浏览其他页面时,它会出现此错误:警告:session_start():open(/ var / www / clients / client0 / web1 / tmp / sess_iif14obm0s1be3ie5ua9v433d6,O_RDWR)失败:/ var / www中的权限被拒绝(13)第11行的/clients/client0/web1/web/myfile.php

经过一番调查后,我发现有些页面会创建一个会话文件,用户:组设为www-data:www-data,而主页使用web1创建:client0(ISP配置用户/组方案)。

使用此回答中的代码How can I fix the Permission error when I call session_start()?

$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
exit;

>> output: web1 for homepage www.mydomain.com/
>> output: www-data for other pages www.mydomain.com/anything.html

所有页面都被重定向到index.php。因此,当没有重定向时,php执行用户web1(主页),当有重定向时,php执行用户www-data。

以下是.htaccess

中重定向的代码
RewriteCond %{HTTP_HOST} ^domain.com$
RewriteRule ^(.*) http://www.domain.com/$1  [QSA,L,R=301]

<FilesMatch "^fr$">
    ForceType application/x-httpd-php
</FilesMatch>

网址为http://www.domain.com/fr/something.html

我怎么能纠正这个?

2 个答案:

答案 0 :(得分:0)

您必须为 domain.com (和/或 www.domain.com )定义了一个抢占重定向的虚拟主机。在虚拟主机定义中,用户设置为 web1

See this page for instance

在你的vhost配置中可能有类似的东西

{{1}}

也许铃声响起; - )

答案 1 :(得分:0)

主页使用的是CGI / FastCGI,其他页面使用的是Apache 2.0 Handler(我认为是mod_php)。

我去了ISPConfig并将PHP模式更改为mod_php,因此所有页面都由同一个处理程序处理。