macOS Big Sur 上的 PHP 文件读取错误

鲍比杰克

我从fopen收到以下错误file_get_contents

failed to open stream: Operation not permitted

这仅在通过浏览器中的 localhost 访问脚本时发生 - 在命令行上,它按预期工作。

服务器以我的本地用户身份运行,脚本本身肯定以该用户身份执行 - 通过get_current_user().

脚本认为文件应该是可读的——通过is_readable().

我在 php 或 apache 配置中找不到任何会导致这种情况的明显内容。我最近升级到 Big Sur,这是我记得的第一个此类问题的示例。我怀疑这与 macOS 中与读取文档根目录之外的文件相关的不透明安全设置有关。

关于如何解决问题或进一步诊断问题的任何想法?

哈里姆克

我不在 Mac 上,但这是我发现的。

is_readable()函数返回的信息似乎是假的,PHP 没有读取这些文件的权限。

Detecting if a file is readable 一文中找到了解释

在 Windows 和 Linux(以及旧版本的 MacOS)上,LazFileUtils FileIsReadable 函数足以确定文件是否设置了读取权限。但是,这会返回此文件的全局权限。对于最近/即将推出的 MacOS 版本,默认情况下应用程序应该在权限有限的沙箱中工作如果用户已明确将文件与该应用程序相关联,例如通过拖放或使用文件打开对话框,它们应该只能读取文件。

考虑一个想要读取文件的应用程序~/Desktop/notes.txt这个文件的全局权限意味着这个文件可以被程序读取。但是,我们的特定程序无权读取该文件。不幸的是,FileIsReadable只是报告该文件是全局可读的。然而,当应用程序实际尝试读取文件时,它会出错

在文章中找到了一种可能的解决方案在 Catalina MacOS 10.15 下 Apache 下的 PHP 限制了通过文件链接访问某些文件,可能是由于隐私更改

Catalina 具有更多限制性权限。修复很简单:为 http 启用全盘访问。去做这个:

系统偏好设置 => 安全和隐私 => 全盘访问

导航到磁盘的根文件夹,然后按 Cmd+Shift+。(查看root下的所有文件夹)然后转到

/usr/sbin/

选择“httpd”并重新启动它(apachectl -k restart)。

在 iCloud Drive中的文件夹更改其权限的帖子中找到了另一个答案

我遇到了同样的问题,试图以需要对 Documents 进行读取访问的非特权用户身份运行服务器,而 Documents 位于 iCloud Drive 中。普通的 UNIX 文件权限没有保留。我通过使用 ACL 授予访问权限解决了这个问题。

chmod +a "_www allow list,search" Documents

在这个例子中_www是你的服务器运行的非特权用户。使用ps axu找出这就是用户给你的。

Documents 中的文件夹应该可以正常使用 UNIX 文件权限位,因此您只需对 Documents 文件夹本身执行此操作。

有关 ACL 的更多信息,请参阅此处man chmod

不在 Mac 上,我无法测试上述任何方法,也无法提供其他信息。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

macOS Big Sur Beta上的AndroidStudio崩溃

MacOs Big Sur升级时遇到Vagrant Up错误

Homebrew在MacOS Big Sur上失败

Opencv imshow在macOS 11.0.1(Big Sur)上使python启动器崩溃

PHPUnit始终输出“未执行测试!” 在MacOS Big Sur上

升级到macOS Big Sur v11.0.1后的JAVA_HOME错误

在MacOS Big Sur上安装jupyterlab / jupyter笔记本时出错

Flutter ios Build无法在MacOS Big Sur 11.0 Beta上运行

在macOS 11.0 Big Sur上安装Pyobjc时出错

在MacOS Big Sur上吊舱安装失败

在MacOS Big Sur(M1芯片)上安装自制软件时收到警告

clang-7:错误:macOS Big Sur的链接器命令失败,退出代码为1

Build Failure:如何使用Pyenv在macOS Big Sur 11.0.1版上安装Python 3.8.3?

是否可以在最新的macOS Big Sur上使用Xcode 11.5?

在 macOS Big Sur 的后台运行 Python 脚本

在 MacOS Big Sur 上安装 Netbeans 8.2 找不到 JDK

如何在 macOS Big Sur 上从 LoginItem 运行主应用程序

如何在 MacOS 11 Big Sur 上安装 brew httpd?

如何在 macOS Big Sur 上修复 VS Code 集成终端时断时续的问题?

GraalVM 在 macOS Big Sur (Apple m1) 上安装失败

在 macOS Big Sur 上安装 PyOpenGL

在 MacOS Big Sur 上安装 Dagster

MacOS Big Sur 11.2.3 上的 pdftk :“预期在:/usr/lib/libstdc++.6.dylib”

无法在 macOS Big Sur 上安装 pyarrow

如何使用 Python 3.9.5 重命名 MacOS Big Sur 11.4 上的文件,而不是批处理或顺序,使用列表/CSV 文件?

无法卸载 pip macOS Big Sur 11.2.3

无法在 macOS Big Sur (Apple M1) 上保护 MariaDB 安装

使用 Homebrew 在 macOS Big Sur 11.5.1 上编译 FreeCAD,查找 XercesC 文件时出错

评论在 macOS Big Sur 上的 iTerm2 中不起作用