【问题标题】:Work with paths on localserver and normalserver使用本地服务器和普通服务器上的路径
【发布时间】:2017-05-04 23:48:48
【问题描述】:

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

现在我想使用绝对路径,例如 (/main/includes/header.inc.php) 但是在线服务器和本地服务器上的根文件夹不同,所以也行不通。

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

杰尔默

【问题讨论】:

  • WAMP 是您的开发环境和 000webhost 您的生产环境吗?我只是想弄清楚两台服务器之间的连接
  • 我同时使用它们的原因是因为我想离线工作,以便立即看到差异。有时我想将它上传到服务器,因为我一起工作并想显示结果。

标签: php server relative-path absolute-path localserver


【解决方案1】:

设置一个 Web 根目录常量 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 有点乏味。我发现这篇文章解释了如何在 .htaccess 中设置环境变量。这样我们只需要在一个地方设置它,就可以在所有文件中访问它。

例如:

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

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

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

学分:

store constant variable on server via .htaccess

【讨论】:

  • 所以如果我理解正确(我是一名初级程序员),我需要为根路径设置一个常量。类似于 if 语句,它检查用户是在 localhost 还是 000webhost 上。并根据该服务器设置常量?那么我需要把常量放在每个文件路径之前?
  • 非常感谢!但是我在哪里可以找到那个帖子?
  • @JelmerDekker 抱歉,我在手机上,无法正确撰写评论。请参阅我对替代(可能是首选)方法的更新答案
  • 没问题!非常感谢你,你真的帮助了我!
猜你喜欢
  • 2019-05-17
  • 2013-03-11
  • 2014-06-24
  • 2013-06-29
  • 1970-01-01
  • 2013-01-09
  • 2012-10-29
  • 2016-01-25
  • 1970-01-01
相关资源
最近更新 更多