【发布时间】:2015-02-25 03:49:37
【问题描述】:
我正在使用 000webhost,它使用根文件夹中的 public_html 文件夹作为站点的可见根。在那个文件夹中,我有一个包含一些 PHP 脚本的 assets 文件夹,还有一个包含 PHP 索引页面的文件夹。使用 require "/assets/includes/scriptname.php"; 不起作用,因为它试图找到 public_html 的同级文件夹。我可以编辑 .htaccess 以更改相对于 PHP 查找的根文件夹,但我不知道如何。
文件树:
public_html (within root, but simulated root)
folder1
index.php
folder2
index.php
folder3
index.php
assets
subfolder
subfolder
index.php
简而言之,我如何在/public_html/ 中创建提到的代码点而不显式声明它(最好作为 .htaccess 更改,因为我希望我的代码能够在不重写任何内容的情况下移动到不同的主机)。
对于 .htaccess 重写的答案,您能解释一下它的每一行是如何工作的吗?谢谢。
【问题讨论】:
-
不会
require "/..."查找与文件系统/相关的文件吗?除非您以某种方式chroot脚本,否则它应该如何工作?我会使用相对路径,或者将include_path设置为assets/includes,然后只设置require "scriptname.php" -
我在想一些类似于stackoverflow.com/questions/9413127/… 或stackoverflow.com/questions/16512881/… 的东西——它对我的目的有用吗? (很可能是第一个)
-
chdir($_SERVER['DOCUMENT_ROOT']); require "assets/...";应该没问题。 -
这给出了一个错误,指出存在 open_basedir 限制。
-
@Firedrake969 这个问题是 mod_rewrite 重写了 requests 而你使用的是 php 的
require与请求无关,不会被它处理
标签: php .htaccess mod-rewrite