当我将脚本上传到服务器时出现此错误
警告:未知: 开(/ tmp目录/ sess_58f54ee6a828f04116c2ed97664497b2, O_RDWR)失败:权限被拒绝(13) 在第0行的未知中
警告:未知:写入失败 会话数据(文件)。请验证 当前的设定 session.save_path是正确的(/ tmp)in 第0行未知
我致电session_start();
时出现错误
虽然我将/ tmp文件夹的权限设置为777。
答案 0 :(得分:25)
更改可以写入数据的会话路径或联系服务器管理员了解/ tmp问题
答案 1 :(得分:9)
您需要更改session.save_path
php.ini指令
您可以使用session_save_path
答案 2 :(得分:6)
如果您有SSH访问权限,以下是如何更正权限和所有权
sudo chown -R NAME_OF_USER /tmp
由运行php的用户替换NAME_OF_USER。你可以通过简单地将这些行放在php文件中找到它:
$processUser = posix_getpwuid(posix_geteuid());
print $processUser['name'];
exit;
答案 3 :(得分:3)
此外,您可能希望使用ini_set('session.save_path', '/dir/here');
,假设您有权访问此功能。建议的其他方式是有效的。
答案 4 :(得分:2)
我刚刚遇到了一个与我的PHP脚本完全相同的问题而且我就像是什么让我打破'因为它在前一天完美运行并且我从我自己的本地Puppy Linux机器运行它所以它不是甚至是主人或任何东西。
在此之前我唯一想做的就是尝试让Java在Web浏览器中运行,所以我可以设法让Java工作但是打破了PHP - oops!
无论如何,我确实记得在尝试让Java工作的同时我删除了/ tmp文件夹的内容以擦除可能导致问题的任何内容(实际上结果是Java我使用旧的插件oij与新的Firefox)
为了解决这个问题,我打开了Rox文件管理器,转到/文件夹并右键单击了tmp folder -> Mount Point 'tmp' and clicked properties
。
我注意到权限设置为Owner - Read,Write,Exec,但Group和World仅设置为Read和Exec而不是Write。我在Group和World中写了一个勾号,现在PHP再次正常工作。
我不知道在什么时候tmp的权限必须已经更改,但是要使用PHP,必须将其设置为具有写权限。
答案 5 :(得分:2)
检查您是否遇到了磁盘空间问题。如果所有权限都是正确的(并且777应该为您完成),那么如果没有足够的空间写入磁盘,您可能仍然会收到此错误(对于某些版本的PHP和Apache)。
答案 6 :(得分:2)
在以下情况下我遇到了这个问题:
结论:出于不相关的原因,我不得不更改我的PHP版本,并且在使用会话切换时,会话被破坏。
答案 7 :(得分:2)
我意识到这是一篇很老的帖子,但是我遇到了这个问题,并找到了一个简单的解决方案。
对我来说,问题发生在我在本地部署的一个网站上。我没有尝试使用其他浏览器访问网站,但每次我尝试通过Chrome访问此网站时都会发生这种情况。我决定在应用程序选项卡下进入Chrome开发人员工具 - 然后单击“清除存储”。瞧 - 一切都像魔术一样。
希望这有助于其他人!
答案 8 :(得分:2)
我有同样的权限问题,但在/ var / lib / php / session /.
要解决此问题,我会删除该文件并重新启动php-fpm。
rm -rf /var/lib/php/session/sess_p930fh0ejjkeeiaes3l4395q96
sudo service php5.6-fpm restart
现在一切正常。
答案 9 :(得分:1)
如果:
然后您会在以下情况下看到此错误Apache PHP进程尝试在会话文件上运行垃圾收集。
修正:
答案 10 :(得分:1)
如果您使用的是Apache
网络服务器,快速解决方法是转到您的命令行并输入:
open /etc/apache2/
然后从打开的窗口打开名为httpd.conf
的文件并搜索User
或Group
将这两行更改为:
User _www
Group _www
这是因为您希望您的服务器拥有系统目录的权限,尤其是您想要更改User
,或者您可以将Group
保留为staff
或{{1 }}
答案 11 :(得分:1)
添加以下行
ini_set('session.save_path', getcwd() . '/tmp');
之前
session_start();
答案 12 :(得分:0)
对我来说问题似乎是一个WHM错误! 我有一堆添加域名,所有工作正常,但有一个子域,它会带来这个错误。
奇怪的是,如果我使用主域名的完整网址,它可以正常工作:
main-domain.com/my.subdomain.com
如果我直接使用子域,则会出现“Permission denied(13)”:
my.subdomain.com
事情是所有插件域的根目录是:
/家庭/ XX /
但对于我的子域名,不知道原因,根是:(我不应该访问该目录)
/
所以它确实试图达到:/ tmp而不是/ home / xx / tmp
哪些也存在,但没有正确的权限
澄清这是整个路径的例子:
/首页/我的账户/的public_html
/首页/我的账户/ tmp目录
的/ tmp
我使用的解决方法是:
session_save_path( '/家庭/我的账户的/ tmp');
在session_start();
答案 13 :(得分:0)
我最初遇到这个问题是因为nginx拥有/ tmp位置而且php-fpm正在&#39; apache&#39;用户和组由于www.conf。我换掉了该文件中的用户/组,然后它运行正常。您可以查看<?php echo exec('whoami'); ?>
进行验证。
答案 14 :(得分:0)
使用PHP 5.6我已经使用session_save_path()指向域结构中的目录。它工作正常,直到我升级到PHP 7.0,此时我收到了指出的错误。在PHP.net我发现了一些评论,表明指定直接路径并不总是有效,所以我使用了他们的建议。
session_save_path(realpath(dirname($_SERVER['DOCUMENT_ROOT']) . '/../session'));
工作得很好。请记住将/../session
更改为实际会话目录的相对位置。