2013-12-11 39 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

相關問題