我们继承了一个在Ubuntu上运行良好的PHP页面,但是将源代码转储到运行使用PHP 5.4的XAMMP或使用PHP 5.3的WAMP运行的Windows 7系统上.
转储发生的点似乎是它试图解析" - >"(对象属性)字符组合时.当我将其更改为"[]"以作为数组元素进行访问时,它会超过该数组元素,但随后将源代码转储到显示在"=>"(映射)字符组合之后的显示上.注释掉它不起作用,只删除整行才能使它过去.
最后,当它只用"<"和">"符号打印html时,这也会导致屏幕转储.如果我用html实体替换这些字符,源代码不再转储,但程序不显示菜单,根本不起作用.请注意,我可以通过它的登录页面成功登录到应用程序,尽管即使在用户名字段中显示"POST"和其他一些"<"和">"字符.
我已经尝试在整个应用程序上运行unix2dos,但这没有任何效果.还尝试将其中一个违规页面的文本转换为UTF-8,但仍然没有运气.
在回答提出的一些问题时:
工作的ubuntu版本是PHP Version 5.3.10-1ubuntu3.1
在Ubuntu而不是Windows中运行的第一段代码是:
public function __construct($gid)
{
$this->id = $gid;
return $this->retrieve();
}
Run Code Online (Sandbox Code Playgroud)
代码转储到显示器的位置开头于:
id = $gid; return $this->retrieve(); }
Run Code Online (Sandbox Code Playgroud)
是的,PHPInfo确实有效,显示了PHP版本5.3.13的WAMP服务器
我尝试改变短开标签,但没有区别.
该产品是由外包集团为我们编写的,它似乎基于某种框架.但我找不到任何关于Google上任何类名的引用,所以也许他们在内部编写了整个内容.
转到apache日志,实际错误发生在这一行:
$_SESSION['admin_gid'] = Membership::getGroup($rUser['id']);
Run Code Online (Sandbox Code Playgroud)
错误信息是:
没有找到会员资格
成员资格是一个类,它稍后在与上面显示的点上显示的转储器相同的文件中声明,因此由于某种原因,PHP解析器不理解它从那一点读取PHP代码.
I tried changing the short-open-tag but it made no difference.
Run Code Online (Sandbox Code Playgroud)
在这种情况下,您可以编写一个小脚本并运行它,看看它是否有效。尝试短标签和下面的方法。请记住,如果你搞乱了你的服务器,你php.ini将不得不重新启动服务器。最好通过右键单击任务栏上的服务器图标来更改设置。这可能是由于php 短标签造成的。尝试启用和禁用并运行脚本。另请更改以下脚本,看看它如何影响您更改的设置。
EG:
<?php
echo "hi";
// phpinfo(); <-- preferred if you can
?>
Run Code Online (Sandbox Code Playgroud)
然后您可以查看您的服务器是否按预期工作。如果是 O/P,hi你最好尝试一下你的大代码并看看。
顺便说一句,您提供的代码似乎没有错误。
| 归档时间: |
|
| 查看次数: |
601 次 |
| 最近记录: |