问题
升级到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(系统完整性保护),因为这远不是理想的解决方案。
答案 0 :(得分:8)
Catalina具有更多的限制性权限。修复很容易:为http启用完整磁盘访问。为此:
系统偏好设置=>安全和隐私=>完整磁盘访问
导航到磁盘的根文件夹,然后按Cmd + Shift +。 (以查看root下的所有文件夹),然后转到
/ usr / sbin /
选择“ httpd”并重新启动(apachectl -k restart)。
应该可以解决问题。