NFS - PHP问题

时间:2012-02-16 14:13:02

标签: php nfs

我们正面临一个奇怪的问题。我们安装了NFS,其中2台机器以只读模式安装。每当我们上传一个包含文件时,突然我们在PHP中遇到500错误。当我们跟踪代码执行时,我们发现遇到的错误是由于找不到包含文件的问题。但物理上该文件存在于磁盘中并且非常易读。当我们卸载并再次安装它时,此错误将得到解决。每当我们上传文件时,此问题都会随机出现。

我们无法得到任何线索。非常感谢任何投入。

提前致谢。

1 个答案:

答案 0 :(得分:4)

这听起来像是文件锁定问题。 NFS可以锁定正在执行/访问的文件,同时阻止其他人访问它们。以糟糕的方式实现它可能导致死锁,导致文件无效,直到访问它的应用程序被删除。

以下是有关文件锁定的更多信息:http://en.wikipedia.org/wiki/File_locking

我建议您检查一下NFS在文件锁定方面的配置方式,并根据您的访问需求进行解决。

如果它是只读的,则您不需要启用文件锁定,因为文件锁定的主要好处是防止两个人同时写入某个位置或有人写入某个位置位置,阻止某人阅读过时或未完全完成的数据版本。作为只读数据点,在这种情况下不需要这样做。

<强>更新

要在Linux NFS上禁用文件锁定,在挂载NFS点时,在分配给它的选项中添加nolock。

例如,如果这是你的/ etc / fstab:

/dev/hda2   /   ext2    defaults    1 1
/dev/hdb1   /home   ext2    defaults    1 2
/dev/cdrom  /media/cdrom    auto    ro,noauto,user,exec 0 0
/dev/fd0    /media/floppy   auto    rw,noauto,user,sync 0 0
proc    /proc   proc    defaults    0 0
/dev/hda1   swap    swap    pri=42  0 0
nfssrv.server.com:/content  /opt/content  nfs  rw,bg,soft,actimeo=0,rsize=8192         0 0

您可以将其更改为:

/dev/hda2   /   ext2    defaults    1 1
/dev/hdb1   /home   ext2    defaults    1 2
/dev/cdrom  /media/cdrom    auto    ro,noauto,user,exec 0 0
/dev/fd0    /media/floppy   auto    rw,noauto,user,sync 0 0
proc    /proc   proc    defaults    0 0
/dev/hda1   swap    swap    pri=42  0 0
nfssrv.server.com:/content  /opt/content  nfs  rw,bg,soft,actimeo=0,rsize=8192,nolock         0 0