在 Catalina MacOS 10.15 PHP 下,Apache 可能通过隐私更改限制了通过文件链接访问某些文件
Under Catalina MacOS 10.15 PHP under Apache has restricted access to some files via file links possibly by privacy changes
问题
升级到 MacOS 10.15 Catalina PHP 在读取某些 link 而非其他 运行ing PHP 时遇到问题(如Apache 的用户 "www")。问题似乎可能是 OS privacy/security 配置的更改,我们知道该配置已更改,而不是目录执行权限/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 中,link 失败,而 linked 文件的副本 sitesIndex.php 成功。
背景
虽然我不认为它是相关的(因为无法跟随 SymLinks 有不同的错误消息),但以下是 FollowSymLinks 设置。
<Directory "/Users/*/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Require all granted
</Directory>
$ cat $HOME/Sites/.htaccess
Options +FollowSymLinks
Web 服务器 运行 作为用户 "www"。
Apache 正在以 root 身份启动,尽管工作线程 运行 如预期的那样作为 _www。
_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 读取和执行标志设置为所有指向文件的目录。
尝试解决方案
"operation not permitted" 的错误是与 MacOS 下的“系统完整性保护”相关的错误字符串,而不是后面的 Apache SymLink,尽管 pharese "operation not permitted" 可能不是独一无二。错误来自 PHP 而不是 Apache..
我已经允许完整的磁盘访问:
系统偏好设置/安全和隐私/隐私/完整磁盘访问。
我还没有尝试在 OS 级别完全禁用 SIP(系统完整性保护),因为这远非理想的解决方案。
Catalina 具有更严格的权限。修复很简单:为 http 启用完整的磁盘访问。为此:
系统偏好设置 => 安全与隐私 => 完整磁盘访问
导航到磁盘的根文件夹,然后按 Cmd+Shift+。 (查看根目录下的所有文件夹)然后转到
/usr/sbin/
select "httpd" 并重启它(apachectl -k restart)。
这应该可以解决问题。
问题
升级到 MacOS 10.15 Catalina PHP 在读取某些 link 而非其他 运行ing PHP 时遇到问题(如Apache 的用户 "www")。问题似乎可能是 OS privacy/security 配置的更改,我们知道该配置已更改,而不是目录执行权限/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 中,link 失败,而 linked 文件的副本 sitesIndex.php 成功。
背景
虽然我不认为它是相关的(因为无法跟随 SymLinks 有不同的错误消息),但以下是 FollowSymLinks 设置。
<Directory "/Users/*/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Require all granted
</Directory>
$ cat $HOME/Sites/.htaccess
Options +FollowSymLinks
Web 服务器 运行 作为用户 "www"。
Apache 正在以 root 身份启动,尽管工作线程 运行 如预期的那样作为 _www。
_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 读取和执行标志设置为所有指向文件的目录。
尝试解决方案
"operation not permitted" 的错误是与 MacOS 下的“系统完整性保护”相关的错误字符串,而不是后面的 Apache SymLink,尽管 pharese "operation not permitted" 可能不是独一无二。错误来自 PHP 而不是 Apache..
我已经允许完整的磁盘访问: 系统偏好设置/安全和隐私/隐私/完整磁盘访问。
我还没有尝试在 OS 级别完全禁用 SIP(系统完整性保护),因为这远非理想的解决方案。
Catalina 具有更严格的权限。修复很简单:为 http 启用完整的磁盘访问。为此:
系统偏好设置 => 安全与隐私 => 完整磁盘访问
导航到磁盘的根文件夹,然后按 Cmd+Shift+。 (查看根目录下的所有文件夹)然后转到
/usr/sbin/
select "httpd" 并重启它(apachectl -k restart)。
这应该可以解决问题。