【发布时间】:2010-10-08 16:37:33
【问题描述】:
我有一个位于 共享主机 上的 PHP 网络应用程序。 我的目标是在 PHP 页面运行时从 PHP 代码修改 .htaccess 文件。 我需要那个 .htaccess 在其中插入几行 mod_rewrite 行。
问题是在 Windows+Apache 上我可以动态修改 .htaccess 文件 但是当我尝试以任何方式访问此文件时,Linux 上的相同代码会报告一个问题 方式(复制或打开):
"failed to open stream: Permission denied"
我已授予 .htaccess 文件 777 权限 - 仍然没有结果。 是什么阻止我这样做?如何制定解决方法?
附: 我最初的目标是能够将一个新的 RewriteRule 添加到 .htaccess 中,它映射一个 新添加的 category_id 和新的 category_name。
如果不是共享主机,我会使用 RewriteMap(在主要 Apache 配置中)之类的东西,并且能够访问地图文件。
这是我用 PHP+Apache 无法解决的第一个真正的限制,但我希望它也是可以规避的。
【问题讨论】:
-
不建议让 PHP 像这样动态管理 .htaccess,如果它被泄露,就会发生坏事。我猜有 SELinux 或其他一些安全层阻止 PHP 出于这个原因这样做。我同意 Chad Birch 的观点,多采用 MVC 方法。
标签: php apache .htaccess mod-rewrite permissions