2010-01-13 46 views
5

我试图初始化会话,但我得到这个错误:PHP允许对话问题

Warning: session_start() [function.session-start]: open(/tmp/sess_7af3ee9ec1350680bedcf63833d160bd, O_RDWR) failed: Permission denied (13)

的session.path设置到/ tmp 777个烫发。

我尝试将session.path编辑为“0; 777;/tmp”,但会话文件是使用错误的权限(仅写入)创建的。

我在apache2和ubuntu 9.10上使用PHP 5.2。 任何想法?

回答

4

请确认/ tmp目录的权限,真的是xx777

<?php 
error_reporting(E_ALL); 
ini_set('display_errors', 1); 
$s = stat('/tmp'); 
printf('%o', $s[2]); 
file_put_contents('/tmp/phptest1234.txt', 'test'); 
unlink('/tmp/phptest1234.txt'); 

编辑:下一次尝试,umask

<?php 
echo ' php-umask: ', sprintf('%o', umask()), "\n"; 
echo ' exec-umask: ', exec('umask'), "\n"; 
+0

您的脚本返回44777. 会话文件写入/ tmp,但具有错误权限:php创建具有100366权限的会话文件。我可以写但不能读。 – Daniel 2010-01-14 08:53:46

+0

这听起来像0411的umask,请参阅编辑。 – VolkerK 2010-01-14 12:11:20

+0

返回: php-umask:22 exec-umask:0022 – Daniel 2010-01-14 16:38:21

1

好像你没有写入tmp目录的权限,你需要给它权限来保存文件。

+0

+1:上周让我想起了当我运行某个其他人设置的计算机的/ tmp为0770而不是1777或1666的计算机时出现的情况。来想一想,这也是Ubuntu服务器。 – Powerlord 2010-01-13 18:03:45

+1

看起来他已经说过/ tmp的perms设置为777. – 2010-01-13 18:07:46

0

我解决这个问题,有一个第三方库,设置错误的umask到777,删除它的问题就解决了。感谢您的回答。

+2

我有同样的问题。我该如何解决它? 。谢谢 – bader 2010-03-15 15:34:52

1

我也有这个问题。有在/ etc/SYSCONFIG/httpd的这是不正确地设置umask的一条线,所以我评论一下:

#umask 644 

一切都很好了。