我在Mac的本地AMP堆栈上运行了一个第三方PHP应用程序。我最近买了一台新的装有Lion的Mac Mini,正在尝试设置它。我以前的电脑是一台装有MAMP的MB air。现在我使用的是内置的apache/php和一个自制的MySQL。
我的问题是:我有一个带有符号链接的目录,这些符号链接指向目录,PHP应用程序使用is_dir()
检查这些符号链接。
在我的Lion AMP设置上,这个X1 M1 N1 X失败了。在我的Snow Leopard MAMP X1 M2 N1 X上的相同设置与我的符号链接配合得很好。
这是更有趣的地方。如果我用php -a
(php交互式命令行模式),并在完全相同的目录上执行is_dir()
,它返回true。它只在apache请求的上下文中返回false。这使我认为它与apache用户有关(这是_www
)无法访问符号链接。故障排除超出了我的专业范围。
其他注意事项:
1.是的,我在apache配置中打开了FollowSymLinks
,实际上,有问题的符号链接所在的目录本身就是一个符号链接。Apache对此没有问题。直到使用PHP is_dir()
。
1.不,我不能编辑PHP应用程序,只能回到is_link()
和readlink()
。
1.这个完全相同的设置工作在我的雪豹/MAMP设置。
有什么想法吗?
4条答案
按热度按时间gv8xihay1#
我看到了你的评论,把它们改为
777
,但仍然想知道为什么它不工作。我下面的解决方案可能对你没有帮助。编辑:
如果您可以访问
/etc/apache2/httpd.conf
,通过
sudo vi /etc/apache2/httpd.conf
编辑它。然后更改其中一行或两行
下面是我的目录列表示例。
现在我的公共目录具有
775
权限,这意味着owner
和group
具有完全权限,而其他用户只能读取和执行。这取决于您是希望apache用户从默认的
_www
变为ace
,还是希望apache组从默认的_www
变为staff
。一旦你决定了要改变哪一个,重新启动apache。
您的页面现在应该可以访问目录/文件。
需要注意的一点是,您必须更改已由您的网页写入的文件的所有权,因为这些文件具有
_www:_www
所有权,并且在重新启动后您将无法访问它们。你可以通过这个改变自己的新所有权,
-R
就是让它递归。w51jfk4q2#
是否检查了权限/所有者?
来自PHP手册:注意:此函数的结果已缓存。
xkftehaa3#
我有一个类似的问题。我创建了以下链接:
然后我在/sites/www. example. com中创建了一个test.php文件www.test.com/docroot,它只执行以下操作:
当我从命令行运行test.php时,它会显示为is_dir为True,但当我通过apache从浏览器加载test.php时,它为False。
我访问了/sites/www.test.com/docroot/data并执行了
这并没有改变什么。然后我意识到,实际符号链接目录的parent需要适当的权限设置(/home/mike/uploads)。我在那个目录上做了一个chmod,一切都正常了!
ui7jx7zq4#
检查php配置中的open_basedir指令。该路径也应该包含在内。在linux中,你可以列出多个文件夹,用冒号分隔它们。
https://www.php.net/manual/en/ini.core.php#ini.open-basedir