在Catalina MacOS 10.15下,Apache下的PHP限制了通过文件链接对某些文件的访问,可能是由于隐私更改

时间:2019-10-10 16:39:39

标签: macos apache macos-catalina

问题

升级到MacOS 10.15后,Catalina PHP在读取某些链接(而不是其他链接)时正在运行PHP(以Apache的用户“ www”身份运行)时出现问题。问题似乎可能是操作系统隐私/安全配置发生了变化(我们知道它已更改),而不是目录执行权限/ FollowSymLink权限。

详细信息

$ ls -alt /Users/[MYUSER]/Sites/*info.php
lrwxr-xr-x  1 [MYUSER]  staff   8 Oct 10 11:16 /Users/[MYUSER]/Sites/linfo.php -> info.php
-rwxr-xr-x  1 [MYUSER]  staff  25 Oct 30  2014 /Users/[MYUSER]/Sites/info.php

在以上两个页面中,info.php和linfo.php均正常运行,我认为这表明FollowSymLinks正常工作。

$ ls -alt /Users/[MYUSER]/Sites/*index.php
lrwxr-xr-x  1 [MYUSER]  staff  78 Dec 30  2014 /Users/[MYUSER]/Sites/index.php -> /Users/[MYUSER]/Documents/[ADIR]/Development/GitHub/cms/sitesIndex.php
$ ls -alt /Users/[MYUSER]/Sites/sitesIndex.php
-rwxr-xr-x  1 [MYUSER]  staff  20847 Oct  8 13:11 sitesIndex.php

在上述页面index.php中,链接失败,因为链接文件的siteIndex.php副本成功。

背景

尽管我不认为这是相关的(因为无法跟随followSymLinks会显示不同的错误消息),但麻烦的是FollowSymLinks设置。

<Directory "/Users/*/Sites/">
    Options Indexes MultiViews FollowSymLinks
    AllowOverride All
    Require all granted
</Directory>

$ cat $HOME/Sites/.htaccess
Options +FollowSymLinks

Web服务器以用户“ www”的身份运行。

尽管工作线程按预期以_www运行,Apache还是以root身份启动。

_www             65500   0.0  0.0  4317396   1288   ??  S     9:56AM   0:00.02 /usr/sbin/httpd -D FOREGROUND
_www             28574   0.0  0.0  4317440   2256   ??  S    12:16PM   0:00.03 /usr/sbin/httpd -D FOREGROUND
_www             28546   0.0  0.0  4317520   2612   ??  S    12:15PM   0:00.06 /usr/sbin/httpd -D FOREGROUND
root             28529   0.0  0.0  4317548   1284   ??  Ss   12:15PM   0:04.56 /usr/sbin/httpd -D FOREGROUND

$ HOME / Sites中的所有这些文件都位于iCloud下,release notes告诉我们,10.15中为iCloud目录引入了新的其他隐私限制,但我不清楚这些内容是什么限制,或者是否已记录限制。

错误

在服务器响应页面中,PHP产生以下错误:

Warning: Unknown: failed to open stream: Operation not permitted in Unknown on line 0

Fatal error: Unknown: Failed opening required '/Users/owenbrunette/Sites/index.php' (include_path='.:') in Unknown on line 0

在error.log中:

[Tue Oct 08 21:49:11.855033 2019] [php7:warn] [pid 83605] [client ::1:64968] PHP Warning:  Unknown: failed to open stream: Operation not permitted in Unknown on line 0, referer: http://localhost/
[Tue Oct 08 21:49:11.855078 2019] [php7:error] [pid 83605] [client ::1:64968] PHP Fatal error:  Unknown: Failed opening required '/Users/[MYUSER]/Sites/index.php' (include_path='.:') in Unknown on line 0, referer: http://localhost/

我已经做了很多文件检查。对于通向文件的所有目录都设置了UNIX的UNIX读取和执行标志。

一种解决方案的尝试

“不允许的操作”错误是MacOS下与“系统完整性保护”相关的错误字符串,而不是Apache SymLink,尽管后面的“不允许的操作”可能不是唯一的。错误来自PHP不是Apache。.

我已允许在以下位置访问完整的磁盘: 系统偏好设置/安全和隐私/隐私/完整磁盘访问。

我还没有尝试在操作系统级别完全禁用SIP(系统完整性保护),因为这远不是理想的解决方案。

1 个答案:

答案 0 :(得分:8)

Catalina具有更多的限制性权限。修复很容易:为http启用完整磁盘访问。为此:

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

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

/ usr / sbin /

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

应该可以解决问题。