XAMPP上的PHP没有正确解释包含相对路径的变量


PHP on XAMPP not Interpreting Variable Containing Relative Path Correctly

我正在尝试在一个小型电子商务网站上做一些工作,我现在负责这个网站。该网站运行在Linux上的Apache服务器上(不确定是哪个版本,HTTP响应只会告诉我它是"Apache"),PHP 5.3.24。该网站在由Network Solutions托管的服务器上运行良好,实际上只使用PHP动态生成页面,没有DB交互,因为目前,我们除了使用PayPal购物车处理最终交易外,还使用PayPals购物车。

我决定在我家的XAMPP Apache/MySQL/PHP安装上进行一些开发-(可能不是最好的选择),特别是:

适用于Windows 1.7.3 的XAMPP

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/v.10.1

所有这些都在Windows XP SP3上运行(等待…)。

当我把网站移植到服务器上时,索引页加载得很好——它都是纯HTML,但当我试图进入网站的下一个级别时,一些资源没有加载。

以下是一个动态构建的.php文件示例,使用includes:

<?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/nice/menu/%3C=$rootDir?%3Eimages/navi6.jpg HTTP/1.1到文件,refer:http://192.168.29.249/niche/menu/category1.php

我注意到错误消息显示<>字符作为URL编码,并且我已经尝试将一些链接更改为包含:"%3C=$rootDir?%3E’,但没有快乐。

有人知道可能发生了什么吗?

对于任何忍受了这么久的人,我向他们致以衷心的"谢谢!"

我将从删除php短标签开始,更改

    <?=$rootDir?>

    <?php echo $rootDir; ?>

这是一篇文章,它解决了一些与短标签相关的问题。https://softwareengineering.stackexchange.com/questions/151661/is-it-bad-practice-to-use-tag-in-php

基本上你在代码中看到的任何地方

 <?= should be changed to  <?php 

这肯定会对XAMPP有所帮助。在实时服务器上更改它们可能也不会有什么坏处。