使用本地服务器和普通服务器上的路径
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
我有问题。我想同时使用本地服务器(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