我曾经使用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 :(得分: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
创建相同的文件结构,一切都应该没问题。
答案 1 :(得分: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');
显然这对未来来说是更好的做法所以我很高兴能够学到新的标准。
(我可以获得一个徽章来回答我自己的问题吗 Pats self in back )