php访问nfs目录,PHP在NFS共享目录中创建空会话

在OSX主机的Vagrant虚拟机中运行Ubuntu12.04时,遇到PHP无法在NFS同步的/var/projects目录下正确创建会话的问题。尽管其他写操作正常,但session_save_path设置为'/projects/sessions'的会话文件创建后为空,并带有不寻常的权限。解决方案是将会话存储位置更改为/tmp或其他非同步目录,以避免此问题。
摘要由CSDN通过智能技术生成

我在OSX主机上的Vagrant VM中运行Ubuntu 12.04.

这里是用于安装文件夹的Vagrant配置:

config.vm.synced_folder "/var/projects", "/projects", type: "nfs"

我发现PHP无法在NFS共享目录上正确创建会话.

这是test.php脚本:

session_save_path('/projects/sessions');

session_start();

file_put_contents('/projects/sessions/file.txt', 'TEST');

这是执行的输出:

$php test.php

PHP Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/project/sessions) in Unknown on line 0

以下是执行后发生的情况:

$ls -l

total 8

-rw------- 1 502 dialout 0 Jul 21 10:13 sess_0p6bt4g3o0sofi3b7p6016jtg7

-rw-rw-r-- 1 502 dialout 4 Jul 21 10:13 file.txt

-rw-rw-r-- 1 502 dialout 164 Jul 21 10:12 test.php

如您所见,会话文件为空,并使用奇怪的权限创建.因此,创建txt文件时没有错误.

我试过PHP 5.4和5.5

还有其他建议吗?

先感谢您

解决方法:

写会话数据

我也遇到过这个问题:(

不幸的是,我无法弄清楚为什么会这样.它与PHP如何将会话数据与流浪客户中的NFS同步文件夹结合使用有关. (所有其他写操作正常运行,它特定于会话写入.)

我最终通过在同步文件夹之外存储会话来解决这个问题.在我的情况下,我只使用/ tmp.对于流浪客人来说,这样做的安全风险是可以接受的恕我直言,因为它只能在您的本地机器上运行.我不会在真实(生产)服务器上推荐这个,但是你不会有这个问题;)

所有者/团体

文件所有者(502)/组(拨出)&同步文件夹中的目录对于OS X主机上的流浪客户是正常的.

502是OS X主机上用户的uid.该用户将其gid设置为20(工作人员),这对于OS X用户来说是正常的.通过NFS挂载同步文件夹时,同样的uid& gid将出现在流浪客人面前.在那里,uid 502没有映射到用户,这就是为什么502会在你执行ls -l时显示的原因. gid 20映射到组拨出,这就是为什么会显示.

我之所以提到这一点,是因为你可以在互联网上找到很多资源,指出这个“奇怪的”用户/组信息是写问题的根源,但事实并非如此.这根本不是“奇怪的”(但对于OS X主机上的NFS同步文件夹完全正常)并且不会导致写入问题.您可以使用file_put_contents()编写文件这一事实证明了这一点.

不同会话处理程序

默认情况下,PHP将使用session.save_handler指令的值文件,这会导致会话存储在文件系统中.

某些扩展(如Sqlite,Memcached,Redis等)将注册不同的处理程序供您使用.您可以通过将session.save_handler设置为sqlite,memcached,redis等来启用它们.请参阅有关如何配置它们的正确文档.

或者,您可以通过将session.save_handler设置为user来使用自定义处理程序.然后你可以实现你喜欢的任何东西.这是在MySQL数据库中存储会话的常用方法.这些文档应该让你开始:

标签:php,ubuntu,session,vagrant,nfs

来源: https://codeday.me/bug/20190830/1769535.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值