0

我曾经使用 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");
}

我如何开始诊断两台服务器上的哪些设置不同,以便我可以将它们设置为相同?

4

2 回答 2

0

第一个路径:`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

创建相同的文件结构,一切都应该没问题。

于 2013-04-09T17:56:46.403 回答
0

解决了!首先,我偶然发现了这篇出色的文章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');

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

(我会因为回答自己的问题而获得徽章吗?拍拍自己的背部

于 2013-04-09T20:35:00.963 回答