首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >不允许链接()操作

不允许链接()操作
EN

Stack Overflow用户
提问于 2013-07-15 16:44:25
回答 2查看 2.1K关注 0票数 1

这很奇怪,有时起作用,有时不起作用。

我把var_dumps放在了link()的论点上。

代码语言:javascript
复制
string(35) "/printbox/web/repo/docusearch/5.pdf"
string(82) "/printbox/web/repo/hardlink/Oleaginosa Moreno Hnos. S.A._20130715_000532989552.pdf"

__

代码语言:javascript
复制
A PHP Error was encountered

Severity: Warning

Message: link(): Operation not permitted

Filename: controllers/ct_form_procesar_escaneos.php

Line Number: 178

__

代码语言:javascript
复制
string(35) "/printbox/web/repo/docusearch/6.pdf"
string(77) "/printbox/web/repo/hardlink/MOLINOS RIO DE LA PLATA_20130715_000533396947.pdf" //THIS WORKED !!!

上面的__ 工作了(这里没有错误,实际上创建了硬链接)

代码语言:javascript
复制
string(35) "/printbox/web/repo/docusearch/7.pdf"
string(77) "/printbox/web/repo/hardlink/RENOVA TIMBUES VICENTIN_20130715_000533520657.pdf"

__

代码语言:javascript
复制
A PHP Error was encountered

Severity: Warning

Message: link(): Operation not permitted

Filename: controllers/ct_form_procesar_escaneos.php

Line Number: 178

我真的找不到任何模式..。当我制作一个脚本来手动测试前一个脚本时,也会失败:

代码语言:javascript
复制
<?php 
echo "Hi";
link( '/printbox/web/repo/docusearch/7.pdf', '/printbox/web/repo/hardlink/RENOVA TIMBUES VICENTIN_20130715_000533520657.pdf');
?>

Apache的日志:

代码语言:javascript
复制
[Mon Jul 15 13:41:57 2013] [error] [client 192.168.100.204] PHP Warning:  link(): Operation not permitted in /printbox/web/repo/a.php on line 3

在目标名称中对_的分隔空间没有帮助。

谢谢!

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-07-15 18:08:14

问题似乎在于它需要对第一个文件(存在的文件)拥有写权限,我不知道为什么。

票数 2
EN

Stack Overflow用户

发布于 2014-10-05 03:16:58

对于我的情况,我发现需要执行以下额外步骤,因为我定期更新特定的tarball供其他人下载,并在PHP中为每个HTTP客户端创建指向这些tarball的单独硬链接,以便URL是随机的。换句话说,我动态地为每个访问网站的访问者在PHP中创建了一个不同的硬链接。当我从旧操作系统移到新操作系统(OpenSuSE 13.1)时,这个问题失败了。这是我的方法。

  1. 使link()目标的父目录具有chmod u=rwx、g=rxs、o=rx的权限。这应该在"ls“中显示为"drwxr-sr-x”。在本例中,user.group所有权为wwwrun.www。
  2. 以chmod u=rw、g=rw、u=r的权限将tarball文件上传到服务器,然后这些文件将从父目录继承组所有权"www“。
  3. 在PHP中创建多个硬链接,从user.group=wwwrun.www拥有的另一个目录创建链接()到目标文件。这是允许的,因为该文件可由组"www“写入,并且组所有权是从父目录继承的。

这种方法的优点是文件可以由普通用户拥有,但是"www“组可以修改文件,而HTTP服务器可以使硬链接成为可写组。由于组所有权继承的"BSD语义“,上传文件到服务器的用户不需要在HTTP服务器的组中。(见man 2 stat)

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/17659409

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档