Avatar billede gramil Novice
09. juli 2016 - 12:19 Der er 12 kommentarer og
1 løsning

Parse Error

Jeg får følgende fejlmeddelelse i Magento Webshop:

Parse error: syntax error, unexpected T_STRING in /home/www/enheltnyverden.dk/app/code/community/Quickpay/Payment/Model/Sales/Order/Grid/Fraudprobability.php on line 1

Filen ser sådan ud:

<?phpclass Quickpay_Payment_Model_Sales_Order_Grid_Fraudprobability extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract{  public function render(Varien_Object $row)  {    $url = Mage::helper("adminhtml")      ->getUrl(?quickpaypayment/order/?, array("id" => $row->getId()));    $image = Mage::helper('quickpaypayment')->getImage($row->getId());    $content = $this      ->getLayout()      ->createBlock('core/template')      ->setTemplate('quickpaypayment/grid/fraudprobability.phtml')      ->setInfoUrl($url)      ->setImage($image)      ->toHtml();    return $content;  }}

Nogen idé om hvad der kan være galt?

Hilsen Michael
Avatar billede Slater Ekspert
09. juli 2016 - 13:14 #1
Ser filen virkelig sådan ud? Altså, der er jo f.eks. en åbenlys fejl i, at <?phpclass er i ét ord, men hvis filen ser sådan ud, så er der jo noget helt galt. Det er ikke noget udvikleren ikke ville have opdaget.

Hvis ikke, så er det jo ikke til at fejlfinde i det rod. Så skal vi nok se den ordentligt.
09. juli 2016 - 14:03 #2
Det ligner en FTP-overførsel der er gået galt. Har selv oplevet at få hentet en fil ned lokalt med ftp, som blev hentet ned forkert - og indholdte fejl a la dem du har i det der stykke "kode". Problemet er så at den blev hentet ned sammen med en masse andre, så jeg havde ingen chance for at vide at der var fejl i den. Når man så uvidende om fejlen, uploader det hele til serveren igen, så er fejlen pludselig permanent overalt. Den eneste måde at rette op på det er at installere quickpay-modulet påny for at få den rigtige fil på plads igen.
09. juli 2016 - 14:11 #3
Har lige prøvet at åbne den reelle fil i Notepad og så får ser det sådan ud som du viser os det. Det skal se sådan her ud:

<?php

class Quickpay_Payment_Model_Sales_Order_Grid_Fraudprobability extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{


  public function render(Varien_Object $row)
  {
    $url = Mage::helper("adminhtml")
      ->getUrl("quickpaypayment/order/", array("id" => $row->getId()));
    $image = Mage::helper('quickpaypayment')->getImage($row->getId());

    $content = $this
      ->getLayout()
      ->createBlock('core/template')
      ->setTemplate('quickpaypayment/grid/fraudprobability.phtml')
      ->setInfoUrl($url)
      ->setImage($image)
      ->toHtml();

    return $content;
  }

}
09. juli 2016 - 14:13 #4
Jeg har ingen erfaring med at bruge Notapad(genuince windows), men håber du har mere success med Sublime o.lign.
Avatar billede gramil Novice
09. juli 2016 - 17:31 #5
Her er filen som jeg ser den i rigtig udgave...

<?php
class Quickpay_Payment_Model_Sales_Order_Grid_Fraudprobability extends Mage_Adminhtml_Block_Widget_Grid_Column_Renderer_Abstract
{
  public function render(Varien_Object $row)
  {
    $url = Mage::helper("adminhtml")
      ->getUrl("quickpaypayment/order/", array("id" => $row->getId()));
    $image = Mage::helper('quickpaypayment')->getImage($row->getId());
    $content = $this
      ->getLayout()
      ->createBlock('core/template')
      ->setTemplate('quickpaypayment/grid/fraudprobability.phtml')
      ->setInfoUrl($url)
      ->setImage($image)
      ->toHtml();
    return $content;
  }
}
09. juli 2016 - 18:31 #6
Ja, det ser jo fint ud, og kompilerer også fint på min side. Så det er lidt underligt at du får fejl. Måske serveren har fået noget galt i halsen, og derfor kunne bruge en genstart. Eller også er der noget med UTF8 eller linjeskift som stadig er forkert i filen.
Avatar billede Slater Ekspert
09. juli 2016 - 20:44 #7
Ja, "Unexpected string" kan betyde at filen har et BOM tegn i starten, som er usynligt i næsten alle editors, men som kan forstyrre PHP. Sørg for at filen er gemt uden BOM.
Avatar billede gramil Novice
09. juli 2016 - 22:59 #8
Afinstallerede og re-installerede Quickpay modulet. Og nu fungerer det.
Så nu behøver jeg ikke spekulere yderligere over hvad der var galt. :-)
Tak for gode råd.
10. juli 2016 - 00:16 #9
Ja, indirekte havde jeg jo løsningen, men Slater var nok mest præcist på den - selvom det går hen og bliver lidt teknisk - med usynlige tegn/BOM :-) Disse er sansynligvis ikke til stede efter du opdaterede modulet, da de dermed er uberørt af en editor. Så, ja, det løste det.
Avatar billede Slater Ekspert
10. juli 2016 - 11:03 #10
Ja ja, det var skam din løsning, Maya. Jeg uddybede bare.
Avatar billede gramil Novice
10. juli 2016 - 11:33 #11
Jeg er lidt i tvivl om de der usynlige tegn/BOM. Burde de ikke kunne ses i DreamWeaver?
10. juli 2016 - 11:56 #12
Så vidt jeg ved indeholder DreamWeaver en  W3C validator og denne ser ud til at smide en advarsel om det - altså når man aktivt beder DreamWeaver om at køre en validering, men jeg kan ikke se nogen steder at DreamWeaver selv gør det.

Se også her:
https://forums.adobe.com/thread/483863
Avatar billede Slater Ekspert
10. juli 2016 - 13:19 #13
Stort set ingen editors viser BOM, ikke engang Notepad. Du skal som regel helt over i en hex-editor for at kunne se dem.

BOM betyder byte order mark, og det er en ting der bruges i Unicode tegnsæt, hvor hvert tegn kan bestå af mere end én byte. I et traditionelt tegnsæt, som ANSI, er hvert tegn én byte, altså et tal fra 0 til 255 i computerens hukommelse. Unicode har den fordel, at det understøtter mange forskellige sprog og tegn, men derfor er 255 muligheder ikke nok, og hvert tegn kan fylde flere bytes. Men der er man nødt til at fortælle programmet der læser det, hvilken rækkefølge de bytes står i, for der er stor forskel på f.eks. 127 21 og 21 127. Der kommer BOM ind i billedet. Det er et enkelt tegn allerførst i en bil, som bare fortæller hvilken rækkefølge bytes forekommer i, little endian eller big endian.

Men fordi det er en del af tegnsættet, bliver det tegn næsten altid skjult. Det er ikke meningen, man skal se det. PHP burde naturligvis også bare ignorere tegnet, men det gør den ikke, og der kan opstå en del problemer.

Mange moderne editors gemmer automatisk i Unicode uden BOM, altså uden det tegn i starten, så det bare bliver læst som standard big endian, men mange andre gemmer stadig tegnet som udgangspunkt. De fleste giver en mulighed for at vælge at gemme det uden, men det kommer helt an på editoren.
I Notepad++ skal man f.eks. gå op i menuen Encode og vælge Unicode without BOM. I Programmer's Notepad er det i egenskaber for filen. Atom og Brackets gemmer automatisk uden BOM. Jeg ved ikke med Dreamweaver.
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester