设置本地虚拟机与现场服务器相同
我曾经在本地使用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台服务器,让我在不同的可以设置它们一样吗?
第一个路径:`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
创建相同的文件结构,一切都应该罚款。
我可以确认文件结构是相同的。我有强烈的感觉,它与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');
显然,这是为了更好的实践未来,所以我很高兴学到了一个新的标准。
(我能得到的回答我的问题爱国者自上回徽章)
要么向前移动在本地的css文件夹1级别,并使用现场设置,反之亦然。 – tymeJV 2013-04-09 17:54:45