2013-12-11 52 views
0

因此,在我的本地主机上我的网站运行良好,但是当我在工作场所(它有PHP 5.3.3)上的服务器上运行它时,我不断收到意外的T_STRING错误。 我已经指出问题的功能:exportXML(当我删除此功能的网站正在工作)服务器上出现意外的T_STRING错误,但不在本地主机

任何想法? 我有点相信,我的代码是正确的..

Error: 
Parse error: syntax error, unexpected T_STRING in /opt/www-abba/paintingtool/index.php on line 427 

仅供参考线427是这一个:
window.open( “数据:文本/ XML的,字符集= 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"); 
      } 
+0

你有[短标签(http://www.php.net/manual/en/ini.core.php#ini.short-open-tag)开启在服务器上的php.ini? – bagonyi

+0

@bagonyi你能解释'短标签'吗? – Faarbhurtz

+0

http://php.net/manual/en/language.basic-syntax.phptags.php – bagonyi

回答

2

也许你对服务器short_open_tag = On,所以<?xml被解析为PHP代码的开始。

通过php.ini或.htaccess设置short_open_tag = Off

+0

好东西!修复 ! – Faarbhurtz

+1

+1对于很好的catch.I宁愿使用'echo'来输出行而不是'short_open_tag = Off',因为在某些托管/共享服务器上更改'short_open_tag'并不容易。 – bansi

+0

@bansi好主意:)我确实在等待我的服务器管理员进行更改。 – Faarbhurtz

1

这是导致错误的行:

window.open("data:text/xml;charset=utf-8,<?xml version='1.0' encoding='UTF-8'?> 
             ^        ^

如果启用short_open_tag配置(检查phpinfo()输出看到),那么PHP将试图解析里面<??>作为PHP代码的一切。在这种情况下,<?xml正被视为PHP代码块的开始,这就是产生错误的原因。

+0

好东西!修复 ! – Faarbhurtz

0

我也遇到了同样的问题。这是由于short_open_tag。试试.htaccess。它的工作对我来说

php_value short_open_tag 0

相关问题