使用本地服务器和普通服务器上的路径

Work with paths on localserver and normalserver

我有问题。我想同时使用本地服务器(WAMP)和在线服务器(000webhost)。 现在我的文件路径有问题。我不能使用像 (../contact.php) 这样的普通路径,因为我使用 php 包含文件,然后路径会有所不同,因为我在整个站点中包含该文件。

现在我想使用像 (/main/includes/header.inc.php) 这样的绝对路径 但是在线服务器和本地服务器的根目录不一样,这样也不行。

有什么解决方案可以使用吗?

杰尔默

设置可用于加载文件路径的网络根目录常量ROOT。对于每个服务器,相应地将其设置为它们的路径。确保在每个请求命中的第一个文件的顶部加载它。

<?php
define('ROOT', `/var/www/html/site`);
...

现在用常量加载你的文件

include ROOT . '/directory/file.php';

显然为每个服务器设置不同的常量。

您也可以将 define() 放在 if 语句中。

<?php
if($_SERVER['SERVER_NAME'] === 'localhost'){
    define('ROOT','/wamp/dir/'); //obviously not your actual dir
}else{
    define('ROOT','/online/dir/'); //obviously not your actual dir 
}

更新

更好的想法可能是使用环境变量而不是 conts。

在每个页面上设置 CONST 有点乏味。我发现这个 post 解释了如何在 .htaccess 中设置环境变量。这样我们只需要在一个地方设置它,就可以在所有文件中访问它。

例如:

//.htaccess
SetEnv ROOT /var_www/html/site/

现在我可以在我所有的 .php 文件中使用这个值:

<?php
include getenv('ROOT'); . '/directory/file.php';

信用:

store constant variable on server via .htaccess