Php 如何让Apache访问MAC OSx上的文件夹?

Php 如何让Apache访问MAC OSx上的文件夹?,php,apache,macos,Php,Apache,Macos,我是Mac和Apache的新手。我的开发机器我的网站无法访问web根目录/图像或/css文件夹下的任何文件 apache日志显示以下错误: (13)权限被拒绝:文件权限拒绝服务器访问: 该站点位于“站点”文件夹下。我在这个文件夹上签入了“获取信息”,似乎“每个人”都有读取权限。有什么好处 谢谢 今天对我来说这是一个艰难的时刻。事实证明,我需要向web服务器授予整个目录树直到文档根的权限 今天我想到了这个问题,因为我正在使用一个虚拟主机,并将文件存储在我的用户目录中的一棵树上 我不想递归地更改Do

我是Mac和Apache的新手。我的开发机器我的网站无法访问web根目录/图像或/css文件夹下的任何文件

apache日志显示以下错误:

(13)权限被拒绝:文件权限拒绝服务器访问:

该站点位于“站点”文件夹下。我在这个文件夹上签入了“获取信息”,似乎“每个人”都有读取权限。有什么好处


谢谢

今天对我来说这是一个艰难的时刻。事实证明,我需要向web服务器授予整个目录树直到文档根的权限

今天我想到了这个问题,因为我正在使用一个虚拟主机,并将文件存储在我的用户目录中的一棵树上

我不想递归地更改Documents目录中的所有数千个文件,所以我只是对路径中的每个文件夹进行了chmod。在我的主目录中:

$ chmod 755 Documents
$ chmod 755 Documents/projects
$ chmod 755 Documents/projects/dev
$ chmod 755 Documents/projects/dev/someglamorousclientname/
$ chmod 755 Documents/projects/dev/someglamorousclientname/docroot

问题是Apache运行的用户与文件的用户所有者不同,并且Apache的用户没有读/写/执行权限。在我的例子中,用户是
\u www
,并且是
\u www
组的成员

$ sudo dseditgroup -o edit -a userOwnerOfFiles -t user _www
我解决了这个问题,将文件组更改为
\u www

  • 查找apache的用户和组。我使用了以下php脚本:

    <?php
    echo exec('whoami') . '<br>';
    echo exec('groups') . '<br>';
    ?>
    
  • 将所需的文件组更改为
    \u www

    $ chgrp -R _www path/containing/files
    
  • 更改组的文件权限

    $ chmod -R g+rwx path/containing/files
    

  • 另一种解决方法是在MacOSX中使用扩展属性


    chmod+a“\u www-allow-list,read,search,readattr,readsecurity,file\u-inherit,directory\u-inherit”/path/to/document\u-root

    我发现有两件事对我起了作用(我特别想让apache访问下载文件夹):

  • 在系统首选项->安全和隐私->隐私滚动到左侧的完整磁盘访问,确保在底部解锁,然后单击+添加应用程序。导航到/usr/sbin,找到可执行文件
    httpd
    ,并添加该文件,确保其已启用完全磁盘访问。重新锁定首选项

  • 右键单击Finder中的特定文件夹并选择“获取信息”,然后在“共享和权限”下,允许“everyone”用户访问(或者,如果您正试图提高安全意识,可能只允许“_www”用户访问-但我没有测试此功能)


  • 这为我解决了问题

    对不起,我是OSX新手,但当我查看“获取信息”时,我看到了三个帐户及其权限。他们是用户名(我),员工,每个人。我的帐户具有读/写权限,另外两个帐户具有读/写权限。我在这里没有看到任何关于组或所有权的提及。这通常意味着所有者是userName(我),组是staff,但Get Info并不总是显示完全权限。要获得完整的详细信息,请打开终端并运行命令
    ls-lea/path/To/folder
    (如果您不确定如何输入路径,可以从查找器中拖放路径,并将其粘贴到路径中)。感谢您提供的信息。。这两个文件夹似乎都属于我的用户,而且组确实是“staff”。drwxr-xr-x是这两个文件夹的权限?这是否意味着我需要将www添加到staff?我相信这是apache使用的默认帐户,对吗?步骤3:“未找到记录”。Michael,你是否用文件的实际所有者替换了“userOwnerOfFiles”?