服务器上出现意外的T_STRING错误,但本地主机上没有
Unexpected T_STRING error on server but not on localhost
因此,在我的本地主机上,我的网站运行良好,但当我在工作场所的服务器上运行它时(它有PHP 5.3.3),我不断收到意外的T_STRING错误。我已经将问题归结为一个函数:exportXML(当我删除这个函数时,网站正在工作)
有什么想法吗?我有点确定我的代码是正确的。。
Error:
Parse error: syntax error, unexpected T_STRING in /opt/www-abba/paintingtool/index.php on line 427
仅供参考的427号线是这样的:
window.open("data:text/xml;charset=utf-8,"+xml);
代码(是的,这是php文件中的JavaScript):
function exportXML(){
var keys = Object.keys(jSelectedStation);
//Trim all values
for (var i = 0; i < keys.length; i++){
if(jSelectedStation[keys[i]] !=null)
{
jSelectedStation[keys[i]] = jSelectedStation[keys[i]].trim();
}
else
{
jSelectedStation[keys[i]] = "";
}
}
//STATION XML
XML="<station stationNr='"+jSelectedStation.STATNAM+"'><definitionstat><admtyp>"+jSelectedStation.ADMTYP+"</admtyp><responsible>"+jSelectedStation.RESPONSIBLE+"</responsible><bildnam>"+jSelectedStation.BILDNAM+"</bildnam><stattyp>"+jSelectedStation.STATTYP+"</stattyp><stattel>"+jSelectedStation.STATTEL+"</stattel><statnr>"+jSelectedStation.STATNR+"</statnr><zonenr>"+jSelectedStation.ZONENR+"</zonenr><stattext>"+jSelectedStation.STATTEXT+"</stattext><xcoordinate>"+jSelectedStation.XCOORDINATE+"</xcoordinate><ycoordinate>"+jSelectedStation.YCOORDINATE+"</ycoordinate><refresh>"+jSelectedStation.REFRESH+"</refresh><groupid>"+jSelectedStation.GROUPID+"</groupid><position>"+jSelectedStation.POSITION+"</position><extra1>"+jSelectedStation.EXTRA1+"+</extra1><extra2>"+jSelectedStation.EXTRA2+"</extra2><extra3>"+jSelectedStation.EXTRA3+"</extra3><quittype>"+jSelectedStation.QUITTYPE+"</quittype><aliaslist><alias type='imelda'>"+jSelectedStation.IMELDA+"</alias></aliaslist><statcfg>"+jSelectedStation.STATCFG+"</statcfg></definitionstat><logic></logic><logicf></logicf><devices>";
var keys = Object.keys(racks);
for (var i = 1; i < keys.length; i++) //For all elements in Racks, print XML line
{ //1 to skip EMPTY
dev = racks[keys[i]];
if(dev.punkt[0] != undefined)
{
currKrt=dev.punkt[0].y;
}
else
{
console.log(dev);
}
XML+="<device statdev='"+keys[i]+"'><definitiondev><dvtyp>"+dev.type+"</dvtyp><bildnam>"+dev.bildnam+"</bildnam><responsible>"+dev.responsible+"</responsible><text>"+dev.text+"</text>";
if(dev.type == "I" || dev.type == "A")
{
XML+="<i_plaus_min>"+dev.extraProp[0]+"</i_plaus_min><i_plaus_max>"+dev.extraProp[1]+"</i_plaus_max><i_ala_min>"+dev.extraProp[2]+"</i_ala_min><i_ala_max>"+dev.extraProp[3]+"</i_ala_max><i_reference>"+dev.extraProp[4]+"</i_reference>";
}
else
{
XML+="<i_plaus_min>0</i_plaus_min><i_plaus_max>0</i_plaus_max><i_ala_min>0</i_ala_min><i_ala_max>0</i_ala_max><i_reference>0</i_reference>";
}
XML+="<record>"+dev.record+"</record><extratext></extratext><quittype>M</quittype><punkt><kaartdev plaats='"+currKrt.substring(0,currKrt.indexOf(" "))+"'>";
devpkt = 1;
for (var x=0; x < dev.punkt.length; x++)
{
if(dev.punkt[x] != undefined)
{
if(dev.punkt[x].y != currKrt)
{
currKrt = dev.punkt[x].y;
XML+="</kaartdev><kaartdev plaats='"+currKrt.substring(0,currKrt.indexOf(" "))+"'>";
}
//console.log("["+dev.punkt[x].y.substring(dev.punkt[x].y.indexOf(" ")+1,dev.punkt[x].y.length)+"]");
XML+="<devpkt id='"+devpkt+"'><pkttyp>"+dev.punkt[x].y.substring(dev.punkt[x].y.indexOf(" ")+1,dev.punkt[x].y.length)+"</pkttyp><pktcons>100</pktcons><bitnrk>"+dev.punkt[x].x+"</bitnrk><bitstatus>0</bitstatus></devpkt>";
devpkt++;
// if(devpkt>16){alert("More then 16 pkts, THIS IS MADNESS");throw "Stopping execution because not all punkts are defined";}
}
else
{
alert("Not all punkt for " + keys[i] + " are defined. 'nPlease define punkt " + (x+1));
throw "Stopping execution because not all punkts are defined";
}
}
XML+="</kaartdev></punkt></definitiondev><refdev refnam='";
// Refdev substring
if(dev.refdev.indexOf("-") > -1)
{
XML += dev.refdev.substring(0,dev.refdev.indexOf("-")) + "'/></device>";
}
else
{
XML += dev.refdev+"'/></device>";
}
}
XML += "</devices><iodef></iodef></station>";
window.open("data:text/xml;charset=utf-8,<?xml version='1.0' encoding='UTF-8'?>"+XML);
// window.open("data:text/xml;charset=utf-8,<?xml version='1.0' encoding='UTF-8'?>"+XML.innerHTML,"ABBA XML","width=800,height=600");
}
服务器上可能有short_open_tag = On
,因此<?xml
被解析为php代码启动。
通过php.ini或.htaccess.设置short_open_tag = Off
这是导致错误的行:
window.open("data:text/xml;charset=utf-8,<?xml version='1.0' encoding='UTF-8'?>
^ ^
如果启用了short_open_tag
配置(请查看phpinfo()
输出),那么PHP将尝试将<?
和?>
中的所有内容解析为PHP代码。在这种情况下,<?xml
被认为是PHP代码块的开始,这就是产生错误的原因。
我也遇到过同样的问题。由于short_open_tag
已打开。请在.htaccess
中尝试此操作。它对我有效
php_value short_open_tag 0
相关文章:
- Node.js v6.2.0类扩展不是函数错误
- Jquery菜单操作不稳定,定位不正确,存在一般错误
- document.open/document.write没有正确地清除chrome中的文档——这是chrome的错误吗
- chrome扩展更改主机/域警告
- 试图在引导模式内动态生成图表,得到offsetWidth错误
- 为什么会出现错误;未捕获的类型错误:undefined不是函数;
- 我如何修复包含在captcha的addthis中的错误
- 解决节点中的“本地主机意外关闭连接”错误
- 服务器上出现意外的T_STRING错误,但本地主机上没有
- 异常:“远程主机关闭了连接.错误代码为 0x80070057”
- 当 AJAX-get 在本地主机上与 node.js 时收到错误消息
- AJAX 在 GoDaddy 主机上出现数据类型 JSON 解析错误
- Dropbox放入保护程序本地主机文件错误
- Paper.js子主机选择错误区域
- 返回错误;不工作在Firefox在远程主机,但工作在本地主机
- 我在本地主机上运行应用程序时出现错误.无法加载XMLHttpRequest
- Dropzone在本地主机上工作正常,在远程服务器上抛出错误
- 角美元http.访问同一主机但不同端口失败,没有任何有意义的错误
- Heroku Git推送主机错误
- bl.ock预览中出现的本地主机中未出现的错误