php 如何让我的会话写入 apache
声明:本页面是StackOverFlow热门问题的中英对照翻译,遵循CC BY-SA 4.0协议,如果您需要使用它,必须同样遵循CC BY-SA许可,注明原文地址和作者信息,同时你必须将它归于原作者(不是我):StackOverFlow
原文地址: http://stackoverflow.com/questions/6628275/
Warning: these are provided under cc-by-sa 4.0 license. You are free to use/share it, But you must attribute it to the original authors (not me):
StackOverFlow
How to get my session to write to apache
提问by Daniel Kats
I switched servers recently, and now my home page won't work. It gives the following text:
我最近换了服务器,现在我的主页不能用了。它给出了以下文本:
Warning: session_start() [function.session-start]: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in /var/www/vhosts/alt.alternativedc.com/httpdocs/index.php on line 6
Warning: Unknown: open(/var/lib/php/session/sess_eqbchncji8kj22f0iqa9g3v7u2, O_RDWR) failed: Permission denied (13) in Unknown on line 0
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/lib/php/session) in Unknown on line 0
I assumed that this meant that the session folder was not writable, so I ran the following command after I ssh-ed into the server:
我认为这意味着会话文件夹不可写,所以我在 ssh 进入服务器后运行了以下命令:
chmod o+rw /var/lib/php/session
That didn't seem to solve the problem. Not sure what to do now...
那似乎并没有解决问题。不知道现在该怎么办...
回答by Eddie
Try changing your session save path in your php config file, /tmp is a good location.
尝试在 php 配置文件中更改会话保存路径,/tmp 是一个不错的位置。
php.ini
配置文件
session.save_path = /tmp
http://www.php.net/manual/en/session.configuration.php#ini.session.save-path
http://www.php.net/manual/en/session.configuration.php#ini.session.save-path
回答by Martin Zeitler
Just had the same issue on CentOS:
刚刚在 CentOS 上遇到了同样的问题:
chown -R apache:apache /var/lib/php/session
Making the httpd user the ower of the session directory should work, as well.
使 httpd 用户成为会话目录的所有者也应该有效。
回答by daniel Warui
You probably changed a parent folder's permissions recursively, most likely to your own user.
Go to your sessions folder:cd ~;cd /var/lib/php/
您可能递归地更改了父文件夹的权限,最有可能是您自己的用户。
转到您的会话文件夹:cd ~;cd /var/lib/php/
If you find a sessions folder,
just write these two commands in your terminal:cd ~;
to go home, thensudo chown -R www-data:www-data /var/lib/php/session
如果你找到一个会话文件夹,只需在你的终端中写下这两个命令:cd ~;
回家,然后sudo chown -R www-data:www-data /var/lib/php/session
Or, if your sessions folder is "sessions" instead of "session":cd ~;
to go home, thensudo chown -R www-data:www-data /var/lib/php/sessions
或者,如果您的会话文件夹是“会话”而不是“会话”:cd ~;
回家,然后sudo chown -R www-data:www-data /var/lib/php/sessions
This way your server will be able to write sessions into your project.
I'm Quite sure about this approach.
这样您的服务器将能够将会话写入您的项目。
我很确定这种方法。
回答by Muharrem
both of tmp
and /var/lib/session
must be chmod 1777
两者的tmp
和/var/lib/session
必须搭配chmod 1777
and problem solved.
并解决了问题。
回答by Akshay jumbade
Try changing the owner of the session directory to www-data. To do this run this command sudo chown -R www-data /var/lib/php/sessions
. This works for me.
尝试将会话目录的所有者更改为www-data。为此,请运行此命令sudo chown -R www-data /var/lib/php/sessions
。这对我有用。
回答by Giacomo
on ubuntu 12.04 /var/lib/php5 has 1733 permission I change in php.ini session.save_path to /tmp to correctly store sessions alternatively you can set parameter in your code by ini_set('session.save_path',path_where_apache_have_permission_777);
在 ubuntu 12.04 /var/lib/php5 上有 1733 权限我将 php.ini session.save_path 更改为 /tmp 以正确存储会话,或者您可以通过 ini_set('session.save_path',path_where_apache_have_permission_777) 在代码中设置参数;
回答by carla
I tried all the solutions here but they didn't work, because php.ini was being overwritten by other configs.
我在这里尝试了所有解决方案,但它们都不起作用,因为 php.ini 被其他配置覆盖。
To find the culprit I used this trick:
为了找到罪魁祸首,我使用了这个技巧:
grep -lR 'php_value' /etc/
grep -lR 'php_value' /etc/
And there it was /etc/httpd/conf.d/php.conf
messing it up.
So I changed its value from php_value session.save_path "/var/lib/php/session"
to php_value session.save_path "/tmp"
.
它把事情/etc/httpd/conf.d/php.conf
搞砸了。所以我把它的值从php_value session.save_path "/var/lib/php/session"
改为php_value session.save_path "/tmp"
。
After restarting Apache (service httpd restart
) it finally worked!
重新启动 Apache ( service httpd restart
) 后,它终于起作用了!