我正在尝试在一个小型电子商务网站上做一些工作,我现在负责。该站点运行在Apache服务器上(不确定哪个版本,HTTP响应只会告诉我它是“Apache”)在Linux上,PHP 5.3.24。该网站在服务器上运行良好,由Network Solutions托管,实际上只使用PHP动态生成页面,没有数据库交互,因为目前我们使用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文件示例,使用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] [错误] [client 192.168.29.249](20024)给定路径格式错误或包含无效字符:无法映射GET / niche / menu /%3C?= $ rootDir ?%3Eimages / navi6.jpg HTTP / 1.1 to file,referer:http://192.168.29.249/niche/menu/category1.php
我注意到错误消息已经呈现了&lt;&gt;字符作为URL编码,我尝试更改一些链接包含:'%3C?= $ rootDir?%3E',但没有快乐。
任何人都有任何关于可能发生的事情的线索?
对于任何忍受过这种情况的人,我都发出了衷心的感谢“谢谢!”
答案 0 :(得分:0)
我首先删除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肯定有帮助。在实时服务器上更改它们可能不会有什么坏处。