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

提示:将鼠标放在中文语句上可以显示对应的英文。显示中英文
时间:2020-08-26 00:53:43  来源:igfitidea点击:

How to get my session to write to apache

phpapachesession-variables

提问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, then
sudo 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, then
sudo 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 tmpand /var/lib/sessionmust 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.confmessing 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) 后,它终于起作用了!