我们可以使用.htaccess更改include_once路径吗?
我有一个现场服务器和本地服务器上的网站副本。该文件已使许多包括它的路径,这是这样的:我们可以使用.htaccess更改include_once路径吗?
require_once "/long/path/on/server/to/the/site/functions.php";
本地服务器有这一点,并在同一目录中的其他类似的文件
现在不是改变对文件中的所有这些路径我我正在考虑使用.htaccess。这样我就可以将htaccess文件保存在本地,并且在上传到活动服务器时不必一直改变路径。
因此,在这个任何想法?
创建符号链接。这使它变得干净和容易。并且可以很容易地集成到您的项目中。
对于* nix中,你可以使用:
ln -s /path/to/original/ /path/to/linkName
对于Windows(如果文件系统是NTFS),可以使用:
mklink [/D] drive:/path/to/orignal drive:/path/to/linkName
谢谢,我希望这是在Windows中可用。我的本地主机是Windows,但我的服务器是Linux。 – 2012-02-14 20:51:08
thnx @peehaa 我应该已经回答了例子:( – 2012-02-14 23:21:00
Np @JaspreetChahal所有的更好的世界:-) – PeeHaa 2012-02-14 23:24:05
您可以为路径定义常量:
define('ROOT_PATH', '/long/path/on/server/to/the/site/');
require_once ROOT_PATH . "functions.php";
或者你可以改变包括路径
set_include_path('/long/path/on/server/to/the/site/');
require_once "functions.php";
谢谢,我不想使用这种方法,因为然后我将不得不编辑这么多文件:( – 2012-02-14 20:55:12
为了让您的生活更轻松,为什么你不实现自动加载磁带机:
class AutoLoader
{
public function loadLibFile($class)
{
$filename = '/long/path/on/server/to/the/site/' . $class . '.php';
if (!is_readable($filename)) {
return false;
}
include($filename);
}
}
$autoloader = new AutoLoader();
spl_autoload_register(array($autoloader, 'loadLibFile'));
谢谢@peehaa,但在这种方法中,我将不得不改变很多文件,我不想这么做:( – 2012-02-14 20:56:26
没关系,然后我会去@jaspreet回答的符号链接路由,因为你[可以使符号链接在Windows中](http://en.wikipedia.org/wiki/NTFS_symbolic_link)(如果文件系统是NTFS),如果你要开始一个新项目,我会建议使用自动加载,因为它很好用。 – PeeHaa 2012-02-14 21:03:26
通常你甚至不需要接触网络服务器配置这一点,因为这样在已经定义的变量默认配置正确的服务器。
require_once $_SERVER['DOCUMENT_ROOT']."/functions.php";
会在任何环境中加载正确的文件。
不过,你可以不管环境变量使用SetEnv
指令集和在PHP脚本$ _ SERVER阵列读取它。
但是,你不应该使用所有整个脚本这个变量。
更好的做法是使用它来创建一个稍后使用的常量。
你可以创建这个常量条件,取决于环境。
对于单一入口点的东西系统变得更加容易:你可能有建出来的入口点脚本地址的根路径。
但是如果他们的库文件在web根目录之外会发生什么呢?使用include_path ini指令来做这件事情不是更好么? – liquorvicar 2012-02-14 09:37:16
我不喜欢include_path,我更喜欢知道我的文件在哪里准确定位。对于路径您可以使用根据文档根目录构建的相对地址。 – 2012-02-14 09:40:11
但是,如果您在Web文档根目录上使用相对地址,则仍然将自己绑定到相对于Web根目录始终位于相同位置的库文件。至少在我看来,应用程序范围内的常量是可取的。 – liquorvicar 2012-02-14 09:58:40
谢谢@ bo-persson和harper89修复我的语法:D – 2012-02-15 15:12:17
@ jaspreet-chahal,从未想过,谢谢你让我知道。刚接受一个:) – 2012-02-15 15:13:26
@AamirSiddique只是好奇。我们在谈论什么操作系统? – PeeHaa 2012-02-15 16:03:04