Cle*_*ndo 9 apache macos 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
Run Code Online (Sandbox Code Playgroud)
在上面两个页面 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
Run Code Online (Sandbox Code Playgroud)
在上述页面 index.php 中,链接失败,而链接文件sitesIndex.php 的副本则成功。
背景
虽然我不相信它是相关的(因为无法 followSymLinks 有不同的错误消息),但以下是 FollowSymLinks 设置。
<Directory "/Users/*/Sites/">
Options Indexes MultiViews FollowSymLinks
AllowOverride All
Require all granted
</Directory>
$ cat $HOME/Sites/.htaccess
Options +FollowSymLinks
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
$HOME/Sites 中的所有这些文件都在 iCloud 下,我们在发行说明中被告知在 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
Run Code Online (Sandbox Code Playgroud)
在 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/
Run Code Online (Sandbox Code Playgroud)
我已经做了很多文件检查。为其他文件设置的 UNIX 读取和执行标志是为所有通向这些文件的目录设置的。
解决方案的尝试
“操作不允许”的错误是在 MacOS 下与系统完整性保护相关的错误字符串,而不是 Apache SymLink 跟随,虽然“操作不允许”这个词很可能不是唯一的。错误来自 PHP 而不是 Apache ..
我已在以下位置允许完整磁盘访问:系统偏好设置/安全与隐私/隐私/完整磁盘访问。
我还没有尝试在操作系统级别完全禁用 SIP(系统完整性保护),因为这远非理想的解决方案。
小智 21
Catalina 具有更多限制性权限。修复很简单:为 http 启用全盘访问。去做这个:
系统偏好设置 => 安全和隐私 => 全盘访问
导航到磁盘的根文件夹,然后按 Cmd+Shift+。(查看root下的所有文件夹)然后转到
/usr/sbin/
选择“httpd”并重新启动它(apachectl -k restart)。
这应该够了吧。
| 归档时间: |
|
| 查看次数: |
4112 次 |
| 最近记录: |