我们可以使用.htaccess更改include_once路径吗?

问题描述:

我有一个现场服务器和本地服务器上的网站副本。该文件已使许多包括它的路径,这是这样的:我们可以使用.htaccess更改include_once路径吗?

require_once "/long/path/on/server/to/the/site/functions.php"; 

本地服务器有这一点,并在同一目录中的其他类似的文件

现在不是改变对文件中的所有这些路径我我正在考虑使用.htaccess。这样我就可以将htaccess文件保存在本地,并且在上传到活动服务器时不必一直改变路径。

因此,在这个任何想法?

+0

谢谢@ bo-persson和harper89修复我的语法:D – 2012-02-15 15:12:17

+0

@ jaspreet-chahal,从未想过,谢谢你让我知道。刚接受一个:) – 2012-02-15 15:13:26

+0

@AamirSiddique只是好奇。我们在谈论什么操作系统? – PeeHaa 2012-02-15 16:03:04

创建符号链接。这使它变得干净和容易。并且可以很容易地集成到您的项目中。

对于* nix中,你可以使用:

ln -s /path/to/original/ /path/to/linkName 

对于Windows(如果文件系统是NTFS),可以使用:

mklink [/D] drive:/path/to/orignal drive:/path/to/linkName 
+0

谢谢,我希望这是在Windows中可用。我的本地主机是Windows,但我的服务器是Linux。 – 2012-02-14 20:51:08

+0

thnx @peehaa 我应该已经回答了例子:( – 2012-02-14 23:21:00

+0

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"; 
+0

谢谢,我不想使用这种方法,因为然后我将不得不编辑这么多文件:( – 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')); 
+0

谢谢@peehaa,但在这种方法中,我将不得不改变很多文件,我不想这么做:( – 2012-02-14 20:56:26

+0

没关系,然后我会去@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阵列读取它。

但是,你不应该使用所有整个脚本这个变量。
更好的做法是使用它来创建一个稍后使用的常量。
你可以创建这个常量条件,取决于环境。

对于单一入口点的东西系统变得更加容易:你可能有建出来的入口点脚本地址的根路径。

+0

但是如果他们的库文件在web根目录之外会发生什么呢?使用include_path ini指令来做这件事情不是更好么? – liquorvicar 2012-02-14 09:37:16

+0

我不喜欢include_path,我更喜欢知道我的文件在哪里准确定位。对于路径您可以使用根据文档根目录构建的相对地址。 – 2012-02-14 09:40:11

+0

但是,如果您在Web文档根目录上使用相对地址,则仍然将自己绑定到相对于Web根目录始终位于相同位置的库文件。至少在我看来,应用程序范围内的常量是可取的。 – liquorvicar 2012-02-14 09:58:40