2017-05-04 128 views
0

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

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

有没有我可以使用的解决方案?

Jelmer

+0

是你开发的WAMP环境和000webhost您的生产?即时通讯只是试图找出两台服务器之间的连接 –

+0

我使用它们的原因是因为我想脱机工作,所以我可以立即看到差异。我想将它上传到服务器,有时是因为我一起工作并想要显示结果。 –

回答

0

配置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 
} 

UPDATE

更好的想法可能beusing环境变量而不是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

+0

所以如果我理解你是正确的(我是一个开始的程序员),我需要设置一个常量到根路径。 类似于if语句,它检查用户是否在localhost或000webhost上。并根据该服务器设置常量? 然后,我需要把每个文件路径之前的常量? –

+0

非常感谢!但我在哪里可以找到这个帖子? –

+0

@JelmerDekker对不起,我在我的手机上,无法正确地写评论。查看我的更新答案替代(可能是首选)方法 –