【发布时间】:2016-08-25 09:06:01
【问题描述】:
我正在尝试在我现在负责的一个小型电子商务网站上做一些工作。该站点在 Linux 上使用 PHP 5.3.24 运行在 Apache 服务器上(不确定是什么版本,HTTP 响应只会告诉我它是“Apache”)。该网站在服务器上运行良好,由 Network Solutions 托管,实际上只使用 PHP 来动态生成页面,没有 DB 交互,因为目前,除了他们处理最终交易外,我们还使用 PayPal 购物车。
我决定在我家的 XAMPP Apache/MySQL/PHP 安装上做一些开发——(也许不是最好的选择),具体来说:
XAMPP for Windows 1.7.3
Apache/2.2.14 (Win32) DAV/2 mod_ssl/2.2.14 OpenSSL/0.9.8l mod_autoindex_color PHP/5.3.1 mod_apreq2-20090110/2.7.1 mod_perl/2.0.4 Perl/v5.10.1
所有这些都在 Windows XP SP3 上运行(等待......)。
当我将网站移植到我的服务器时,索引页面加载正常 - 都是直接的 HTML,但是当我尝试进入网站的下一个级别时,某些资源没有加载。
这是一个使用包含动态构建的 .php 文件的示例:
<?php
$pageID = "category1" ;
$mainPane_filename = "category1.inc";
$rootDir = "../";
$categoryID=$cID = "item_pv";
$sb_filename = "php/itemlist.php";
include($rootDir . "php/template.php");
?>
在这种情况下,变量 '$rootDir' 的赋值工作正常,我的 XAMPP 安装在语法上没有问题:
'include($rootDir. "php/template.php");'
但是,template.php 文件中的链接存在问题。
虽然该文件具有 .php 扩展名,并且确实包含一些独立的 php 脚本,但其中大部分是 HTML。似乎 PHP 解释器不喜欢这样的东西:
<link rel="stylesheet" type="text/css" href="<?=$rootDir?>ns_stl.css">
有很多这样的链接主要指向图形文件。这些链接不存在于脚本标签内,除了语法之外都是直接的 HTML:
<?=$rootDir?>
这些在实时服务器上解释得很好,但我的 XAMPP 安装给了我错误:
[Sun Apr 24 20:50:12 2016] [error] [client 192.168.29.249] (20024)给定的路径格式错误或包含无效字符:无法映射 GET /niche/menu/%3C?=$rootDir ?%3Eimages/navi6.jpg HTTP/1.1 转文件,引用者:http://192.168.29.249/niche/menu/category1.php
我注意到错误消息已将 字符呈现为 URL 编码,我尝试将一些链接更改为包含:'%3C?=$rootDir?%3E',但没有任何乐趣。
有人知道可能发生了什么吗?
对于所有忍受了这么远的人,我发自内心的“谢谢你!”
【问题讨论】: