设置本地虚拟机与现场服务器相同

问题描述:

我曾经在本地使用XAMPP进行开发,但现在我正在切换到运行Ubuntu的VMware虚拟机,以进行本地开发。除了一件事之外,所有东西都被设置并运行本地版本的站点......在css/style.css.php中有一个脚本,其中包含以下行,但需要根据其所在的服务器以不同的方式写入上。设置本地虚拟机与现场服务器相同

fopen("css/style.inc.css"); // Works on the live server 

fopen("../css/style.inc.css"); // Works on the local server 

fopen("/css/style.inc.css"); // DOES NOT work on either server 

活动和本地计算机上的文件结构都是相同的。
可能与问题相关的是脚本不是直接请求的,而是在请求/css/style.css时通过.htaccess映射的。 .htaccess文件看起来像这样

<IfModule mod_rewrite.c> 
    RewriteEngine on 

    RewriteCond %{REQUEST_FILENAME} !-f 
    RewriteCond %{REQUEST_FILENAME} !-d 
    RewriteCond %{REQUEST_URI} !=/favicon.ico 
    RewriteRule ^(.*)$ rewrite.php?q=$1 [L,QSA] 
</IfModule> 

而且rewrite.php文件看起来像这样...

if($_GET["q"] == "css/style.css"){ 
    include("css/style.css.php"); 
} 

我如何开始诊断是什么设置的2台服务器,让我在不同的可以设置它们一样吗?

+0

要么向前移动在本地的css文件夹1级别,并使用现场设置,反之亦然。 – tymeJV 2013-04-09 17:54:45

第一个路径:`fopen(“css/style.inc.css”);建议你的CSS文件夹在根目录下,就像这样:

-index.php //or whatever file has this line 
-css 
    -style.inc.css 

第二条路径建议如下结构

-css 
    -style.inc.css 
-some_web_folder 
    -index.php 

创建相同的文件结构,一切都应该罚款。

+0

我可以确认文件结构是相同的。我有强烈的感觉,它与Apache的设置有关,但我不知道从哪里开始检查。 – 2013-04-09 19:36:21

解决!首先,我偶然发现了这篇优秀的文章http://css-tricks.com/php-include-from-root/,这让我想到了$ _SERVER ['DOCUMENT_ROOT']的设置。所以我写了一个简单的脚本,将其打印在屏幕上,这帮助我诊断出我在地址的末尾用斜线设置了本地虚拟机。

/var/www/vhosts/example.com <--- What the live site looked like 
/var/www/vhosts/example.com/ <--- What the local site looked like 

所以我编辑/etc/apache2/sites-available/example.com并已删除DocumentRoot的斜线,然后改写了我的包括代码如下:

$path = $_SERVER['DOCUMENT_ROOT']; 
fopen($path.'/css/style.inc.css'); 

显然,这是为了更好的实践未来,所以我很高兴学到了一个新的标准。

(我能得到的回答我的问题爱国者自上回徽章)