Bekijk Volledige Versie : PHP parse error
Ik krijg steeds een parse error wanneer er een variabele wordt toegekend
zoals bijv:
$max = "153600";
Het gaat om een eenvoudig uploadscriptje wat bij *iedereen* lijkt te
werken behalve bij mij :'-(
Zie ev. http://www.cathdesign.nl/test/uploaden.txt
Omdat ik wilde uitsluiten dat het misschien aan bepaalde instellingen op
de server van cathdesign.nl zou liggen heb ik het ook nog even ergens
anders geprobeerd. Daar kreeg ik dit te lezen:
"Parse error: unexpected T_VARIABLE"
Waar kan dit aan liggen? En wat is in hemelsnaam een "T_VARIABLE"?
CC
--
cathdesign.nl
Gijssss in niwo: 'Ik wil gewoon antwoord op mijn vraag, als ik elke keer
er op moet gaan letten hoe ik de post opmaak dan kost me dat gewoon te
veel tijd'
Rene Pijlman
03/04/03, 00:50
Catharina:
>Ik krijg steeds een parse error wanneer er een variabele wordt toegekend
>zoals bijv:
>$max = "153600";
>
>Het gaat om een eenvoudig uploadscriptje wat bij *iedereen* lijkt te
>werken behalve bij mij :'-(
>Zie ev. http://www.cathdesign.nl/test/uploaden.txt
Tsja, op de server van Leren.nl geeft dit script niet zo'n
syntax error (PHP 4.1.2 op Linux).
>"Parse error: unexpected T_VARIABLE"
>
>Waar kan dit aan liggen?
Aan een eenvoudige syntaxfout, zoals een spatie tussen "<?" en
"php".
http://www.webmasterworld.com/forum13/1396.htm
>En wat is in hemelsnaam een "T_VARIABLE"?
De "T" staat voor "token", ofwel het meest basale syntactische
element dat de PHP-parser onderscheidt. Een T_VARIABLE is dus
niets anders dan een variabele, zoals "$max". Zie
http://www.zend.com/manual/tokens.php.
Maar waarom die variabele op jouw server "unexpected" is kan ik
helaas niet verklaren.
Wat zegt phpinfo() in jouw geval?
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Hans Wolters
03/04/03, 01:20
On Thu, 3 Apr 2003 00:12:15 +0200, Catharina <news@cathdesign.nl> wrote:
> werken behalve bij mij :'-(
> Zie ev. http://www.cathdesign.nl/test/uploaden.txt
Dit kan een stuk korter. Even de relevante delen die je nodig hebt.
$file = $_FILES['file']['name']
$type = $_FILES['file']['type'];
$tmpname = $_FILES['file']['tmp_name'];
if ($type == 'image/jpg' ||
$type == 'image/jpeg' ||
$type == 'image/pjpeg' ||
$type == 'image/gif')
{
if (!move_uploaded_file ($tmpname, "/path/naam.ext"))
{
echo "er ging iets mis";
}
else
{
chmod("/path/naam.ext", 0644);
}
.........
Je kunt ook checken op de filesize door middel van een var in de $_FILES
array. Desnoods bouw je dat als een extra voorwaarde in de if en gooi je
de checks voor de extentie allemaal in een paar extra ().
Succes,
Hans
--
Waarom zouden spammers betalen voor een cd met
adressen, downloaden is handiger.
http://people.nl.linux.org/~h-wolters/spam.ascii
Rene Pijlman schreef :
> Catharina:
> >Ik krijg steeds een parse error wanneer er een variabele wordt toegekend
> >zoals bijv:
> >$max = "153600";
> >[..]
> >"Parse error: unexpected T_VARIABLE"
> >
> >Waar kan dit aan liggen?
>
> Aan een eenvoudige syntaxfout, zoals een spatie tussen "<?" en
> "php".
> http://www.webmasterworld.com/forum13/1396.htm
Ja, dat had ik gelezen. Ik heb er ook nog wel op gegoogled, en dit was 1
van de eersten als ik me goed herinner.. Maar ondanks de vele fora die ik
heb bezocht ben ik er geen eentje tegengekomen die mij op het goede spoor
kon zetten.
>
> >En wat is in hemelsnaam een "T_VARIABLE"?
>
> De "T" staat voor "token", ofwel het meest basale syntactische
> element dat de PHP-parser onderscheidt. Een T_VARIABLE is dus
> niets anders dan een variabele, zoals "$max". Zie
> http://www.zend.com/manual/tokens.php.
>
> Maar waarom die variabele op jouw server "unexpected" is kan ik
> helaas niet verklaren.
Hè da's jammer. Ik had de hoop dat er ivm bijv een recentelijke PHP
beveiligingsupdate oid iets over te zeggen zou zijn.
>
> Wat zegt phpinfo() in jouw geval?
>
Ehh.. waarover precies?
Staat online op http://www.cathdesign.nl/test/phpinfo.php
CC (ziet haar eigen random gegenereerde sig staan, *hoe* toepasselijk..
:-/
--
cathdesign.nl
Hans in niwo: 'Dus als ik een script dien te gebruiken, dan dus wel kant-
en-klaar.'
Hans Wolters schreef :
> On Thu, 3 Apr 2003 00:12:15 +0200, Catharina <news@cathdesign.nl> wrote:
> > werken behalve bij mij :'-(
> > Zie ev. http://www.cathdesign.nl/test/uploaden.txt
>
<knip script, bedankt alvast>
Hallo Hans,
ik ben -als dumbo op dit vlak- nog wel even bezig om dit in te passen,
maar ik denk eerlijk bekend ook dat dit mijn probleem niet op zal lossen.
Ik heb meerdere uploadscriptjes geprobeerd en allemaal gaven ze een parse
error op de eerste toegekende variable na "<?php" , wat mij deed denken
aan de een of andere recentelijke PHP update waardoor er misschien toch
eerst gedeclareerd moest worden ?? (ik weet niet *echt* waarover ik het
nu heb, maar in ieder geval) ik dacht als dit ergens bekend is, dan is
het wel hier.
Ik zal kijken of ik jouw wijzigingen aan kan brengen en zien wat er dan
gebeurt.
CC
--
cathdesign.nl
Branko Collin in niwo: 'Wat ik dus tamelijk schokkend vind is dat wij
nergens een gelukkige wintertijd gewenst worden, op die hele useit.com-
site niet.'
Rene Pijlman
03/04/03, 11:20
Catharina:
>Ik heb meerdere uploadscriptjes geprobeerd en allemaal gaven ze een parse
>error op de eerste toegekende variable na "<?php" ,
Vreemd hoor. Wat gebeurt er als je een eenvoudige
<?php
echo "<p>Hello World</p>";
?>
probeert?
Enne, wel in ASCII-mode ge-FTP'ed neem ik aan?
>wat mij deed denken aan de een of andere recentelijke PHP update
>waardoor er misschien toch eerst gedeclareerd moest worden ??
Dat is het probleem in ieder geval niet, want dat zou niet tot
een parse-error leiden, maar een andere foutmelding geven.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Rene Pijlman schreef :
> Catharina:
> >Ik heb meerdere uploadscriptjes geprobeerd en allemaal gaven ze een parse
> >error op de eerste toegekende variable na "<?php" ,
>
> Vreemd hoor. Wat gebeurt er als je een eenvoudige
>
> <?php
> echo "<p>Hello World</p>";
> ?>
>
> probeert?
>
Ik had dit al geprobeerd:
<?php
$fname = "test";
print("$fname");
?>
en dat werkte tot mijn verrassing wel.
Nu heb ik de commentaarregels in het uploadscriptje weggehaald en krijg
ik geen parse error meer op die variabelen, tot zover lijkt het goed te
gaan:
<?php
$max = "153600";
$ext = "jpg gif png";
$map = "gfx/";
Maar ik ben wel tegen een nieuw probleem aangelopen:
<?php
$max = "153600";
$ext = "jpg gif png";
$map = "gfx/";
if ($Uploaden)
{
if (!$bestand)
print ("Selecteer een bestand !");
else ....
Dat levert me "Parse error: unexpected '{' " op..
( in de regel na "if ($Uploaden)" )
Het maakt ook niet uit als ik het zo doe:
if ($Uploaden){
if (!$bestand)
...
en weghalen lijkt ook de oplossing niet.
Tjee.. wat een gepuzzel :-|
Bij jou op de server werkte dit scriptje wel René? Jij hebt 'm echt even
uitgeprobeerd?
CC
--
cathdesign.nl
Loek in niwo: 'Luisteren naar kritische opmerkingen kan heel verhelderend
zijn.'
Rene Pijlman
03/04/03, 12:20
Catharina:
><?php
>$fname = "test";
>print("$fname");
>?>
>en dat werkte tot mijn verrassing wel.
Hoezo verrassend? Dat moet toch ook gewoon werken. Dit soort
hersenkronkels krijg je nou als je teveel met computers werkt
:-/
>Nu heb ik de commentaarregels in het uploadscriptje weggehaald en krijg
>ik geen parse error meer op die variabelen, tot zover lijkt het goed te
>gaan:
[...]
>Maar ik ben wel tegen een nieuw probleem aangelopen:
Dit wordt me allemaal een beetje te wazig. Teveel trial & error.
Wat ik zou doen is het simpelste script maken met het
oorspronkelijk probleem: d.w.z. een kort scriptje (van 2 regels
als het kan) dat correcte PHP-code lijkt te bevatten, maar toch
die parse error geeft met unexpected T_VARIABLE.
Dan moeten we toch een of andere instelling van PHP kunnen
vinden die zoiets veroorzaakt, zou je denken.
>Bij jou op de server werkte dit scriptje wel René? Jij hebt 'm echt even
>uitgeprobeerd?
Ja ja, echt waar :-)
http://www.leren.nl/_diversen/cc.php
Dat wil zeggen, de PHP-code wordt met succes geparsed, ik heb
het script verder gemutileerd (om misbruik te voorkomen) en niet
gebruikt of getest.
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
Ronald Klip
03/04/03, 12:50
Catharina schreef:
> Zie ev. http://www.cathdesign.nl/test/uploaden.txt
>
> Omdat ik wilde uitsluiten dat het misschien aan bepaalde instellingen op
> de server van cathdesign.nl zou liggen heb ik het ook nog even ergens
> anders geprobeerd. Daar kreeg ik dit te lezen:
> "Parse error: unexpected T_VARIABLE"
>
> Waar kan dit aan liggen? En wat is in hemelsnaam een "T_VARIABLE"?
Ik zie dat wel eens als de voorgaande regel niet goed is beëindigd: geen
puntkomma, geen unix-style line feed. Misschien moet je even met het
handje overal een goed regeleinde invoegen?
--
groet, Ronald
Rene Pijlman schreef :
> Catharina:
> ><?php
> >$fname = "test";
> >print("$fname");
> >?>
> >en dat werkte tot mijn verrassing wel.
>
> Hoezo verrassend?
Omdat ik was gaan denken dat het *iets* met het toekennen van variabelen
te maken had.. %-|
> Dat moet toch ook gewoon werken. Dit soort
> hersenkronkels krijg je nou als je teveel met computers werkt
> :-/
René, ik begrijp er gewoon echt Helemaal Niets van. Waarom werkt het bij
jou (en bij anderen) wel en exact hetzelfde scriptje bij mij(n provider
en de protagonist) niet?
En waarom worden die variabelen opeens wel geparsed als ik de
commentaarregels weghaal?
> [...]
> >Maar ik ben wel tegen een nieuw probleem aangelopen:
>
> Dit wordt me allemaal een beetje te wazig. Teveel trial & error.
Tsja..
>
> Wat ik zou doen is het simpelste script maken met het
> oorspronkelijk probleem: d.w.z. een kort scriptje (van 2 regels
> als het kan) dat correcte PHP-code lijkt te bevatten, maar toch
> die parse error geeft met unexpected T_VARIABLE.
Lukt me (tot nu toe) niet.
>
> Dan moeten we toch een of andere instelling van PHP kunnen
> vinden die zoiets veroorzaakt, zou je denken.
Heb jij nog gekeken bij 'mijn' phpinfo?
Of kun je me zeggen waar ik naar zou kunnen kijken?
>
> >Bij jou op de server werkte dit scriptje wel René? Jij hebt 'm echt even
> >uitgeprobeerd?
>
> Ja ja, echt waar :-)
> http://www.leren.nl/_diversen/cc.php
Ik heb het gezien.
Mooi hoor %-)
Ik ga toch nog maar even verder met trial & error, want vanzelf gaat het
-jammer-jammer- ook niet over :-]
CC
--
cathdesign.nl
Aernout Brocheler in niwo: 'Bij die gratis shit ontbreekt inderdaad
alleen nog zo'n compleet jaarverslag dat achter je muis aan blijft
hangen!'
Hans Wolters
03/04/03, 14:05
On Thu, 03 Apr 2003 11:18:02 +0200, Rene Pijlman <reply.in@the.newsgroup> wrote:
> Catharina:
>>Ik heb meerdere uploadscriptjes geprobeerd en allemaal gaven ze een parse
>>error op de eerste toegekende variable na "<?php" ,
>
> Vreemd hoor. Wat gebeurt er als je een eenvoudige
>
> <?php
> echo "<p>Hello World</p>";
> ?>
>
> probeert?
>
> Enne, wel in ASCII-mode ge-FTP'ed neem ik aan?
>
>>wat mij deed denken aan de een of andere recentelijke PHP update
>>waardoor er misschien toch eerst gedeclareerd moest worden ??
>
> Dat is het probleem in ieder geval niet, want dat zou niet tot
> een parse-error leiden, maar een andere foutmelding geven.
Ik weet natuurlijk niet welke editor er is gebruikt maar op een irc
kanaal waar ik redelijk vaak zit krijgen we zo af en toe soortgelijke
meldingen en vaak blijkt dan dat er een non printable (als ik het goed
heb) karakter zit in het bestand. Vaak net boven het begin.
Als je dan met headers of sessions werkt gaat dit geheid mis.
Groet,
Hans
--
Waarom zouden spammers betalen voor een cd met
adressen, downloaden is handiger.
http://people.nl.linux.org/~h-wolters/spam.ascii
Hans Wolters schreef :
> On Thu, 03 Apr 2003 11:18:02 +0200, Rene Pijlman <reply.in@the.newsgroup> wrote:
> > Catharina:
> >>Ik heb meerdere uploadscriptjes geprobeerd en allemaal gaven ze een parse
> >>error op de eerste toegekende variable na "<?php" ,
> >
> Ik weet natuurlijk niet welke editor er is gebruikt maar op een irc
> kanaal waar ik redelijk vaak zit krijgen we zo af en toe soortgelijke
> meldingen en vaak blijkt dan dat er een non printable (als ik het goed
> heb) karakter zit in het bestand. Vaak net boven het begin.
>
Ik had kladblok gebruikt. Gekopieerd op internet en gewoon geplakt met
Ctrl+v. Later in Dreamweaver binnengehaald omdat het dan misschien wat
overzichtelijker zou worden ivm kleurtjes & tags enzo.
Toen kwam ik er toevallig achter dat wanneer ik een regel exact hetzelfde
overnieuw intypte de parse error ook steeds 1 regel verder optrad.
Ik heb het hele scriptje inmiddels opnieuw ingetypt en nu komen er
inderdaad geen parse errors meer. Dit probleem is dus opgelost, ik vind
het trouwens wel een beetje vreemd omdat ik altijd dacht dat zoiets met
Kladblok niet kon gebeuren. Het script wordt dus netjes geparsed maar
uploaden lukt nog steeds niet, hij geeft de boodschap dat het een foute
extensie is (zowel bij Opera als bij IE), ook als ik de variabele
$ext = "jpg gif png";
leeg laat, dus zo:
$ext = "";
Volgens mij zit dat ergens in dit stukje:
// toegestane extensies checken
$ext = strtolower($ext);
$ext = explode(".", $ext);
$aantal = count($ext);
for ($tel = 0; $tel < $aantal; $tel++)
{
if ($bestand3 == $ext[$tel])
{
$extfout = "nee";
}
}
if (!$extfout)
{
print ("Het bestand \"$bestand2\" kan niet worden geupload omdat
de extensie niet is toegestaan.");
}
...
Misschien wordt het nu wel tijd om jouw script in te passen, ik weet
alleen nog niet wat ik dan precies moet vervangen. Maar goed, ik ben in
ieder geval alweer een stukje verder en dat geeft hoop ;-)
Bedankt jullie voor het meedenken!
CC
--
cathdesign.nl
René Pijlman in nip: 'Het woordje "links" helemaal links verwijst
waarschijnlijk naar hyperlinks, wat minder links is dan extreem-links al
zou je dat misschien niet zeggen'
Catharina schreef :
> Hans Wolters schreef :
>
> > On Thu, 03 Apr 2003 11:18:02 +0200, Rene Pijlman <reply.in@the.newsgroup> wrote:
> > > Catharina: ik snap er nix van..
{..]
> Het script wordt dus netjes geparsed maar
> uploaden lukt nog steeds niet [..]
<display = bloos>
Oops! Een 'punt' op de plaats van een spatie..
</>
Het werkt! :-))
CC
--
cathdesign.nl
Gilbert in niwo: 'Nieuwe trend voor 2003: 'Hidden menus'?'
Ronald Klip schreef :
> Catharina schreef:
> [parse errors, waarom?]
>
> Ik zie dat wel eens als de voorgaande regel niet goed is beëindigd: geen
> puntkomma, geen unix-style line feed. Misschien moet je even met het
> handje overal een goed regeleinde invoegen?
>
Ik heb het hele script overnieuw ingetypt en inderdaad, geen parse errors
meer.
CC
--
cathdesign.nl
Hype in niwo: 'Heel het internet heb ik afgezocht naar sites waar je
links van discotheken kon aanmelden'
Hans Wolters
03/04/03, 15:20
On Thu, 3 Apr 2003 14:53:16 +0200, Catharina <news@xxcathdesign.nl> wrote:
> Hans Wolters schreef :
>
>> Ik weet natuurlijk niet welke editor er is gebruikt maar op een irc
>> kanaal waar ik redelijk vaak zit krijgen we zo af en toe soortgelijke
>> meldingen en vaak blijkt dan dat er een non printable (als ik het goed
>> heb) karakter zit in het bestand. Vaak net boven het begin.
>>
> Ik had kladblok gebruikt. Gekopieerd op internet en gewoon geplakt met
> Ik heb het hele scriptje inmiddels opnieuw ingetypt en nu komen er
> inderdaad geen parse errors meer. Dit probleem is dus opgelost, ik vind
> het trouwens wel een beetje vreemd omdat ik altijd dacht dat zoiets met
> Kladblok niet kon gebeuren.
html pagina's bevatten al snel 'onzichtbare' codes. Zeer zeker met een
ctrl/v pak je die automatisch mee.
> Het script wordt dus netjes geparsed maar
> uploaden lukt nog steeds niet, hij geeft de boodschap dat het een foute
> extensie is (zowel bij Opera als bij IE), ook als ik de variabele
> $ext = "jpg gif png";
> leeg laat, dus zo:
> $ext = "";
Als je in de posting kijkt die ik gisteren poste dan kun je zien dat
$_FILES diverse array values heeft. 1 ervan is het type. Het gevaar met
jouw php code is dat iemand een php bestand upload en als image upload.
Zodra die geparsed wordt heb je problemen. Check dus op zowel de extentie
als op het mime/type.
Als je een nieuwe php versie hebt kun je dat met de superglobal _FILE doen.
<http://www.php.net/manual/en/function.move-uploaded-file.php>
In de user comments staan ook wat nuttige tips.
> Misschien wordt het nu wel tijd om jouw script in te passen, ik weet
> alleen nog niet wat ik dan precies moet vervangen. Maar goed, ik ben in
> ieder geval alweer een stukje verder en dat geeft hoop ;-)
Naast die superglobals zou ik zowiezo move_uploaded_file gebruiken inplaats
van copy.
>
> Bedankt jullie voor het meedenken!
Graag gedaan,
Hans
--
Waarom zouden spammers betalen voor een cd met
adressen, downloaden is handiger.
http://people.nl.linux.org/~h-wolters/spam.ascii
Rene Pijlman
03/04/03, 15:50
Catharina:
>Ik heb het hele script overnieuw ingetypt en inderdaad,
>geen parse errors meer.
Die gaat in mijn quoteverzameling :-)
--
René Pijlman
Wat wil jij leren? http://www.leren.nl
> <display = bloos>
> Oops! Een 'punt' op de plaats van een spatie..
> </>
Werkt niet bij mij
Nico Coesel
04/04/03, 23:05
Catharina <news@xxcathdesign.nl> wrote:
>Hans Wolters schreef :
>
>> On Thu, 03 Apr 2003 11:18:02 +0200, Rene Pijlman <reply.in@the.newsgroup> wrote:
>> > Catharina:
>> >>Ik heb meerdere uploadscriptjes geprobeerd en allemaal gaven ze een parse
>> >>error op de eerste toegekende variable na "<?php" ,
>> >
>> Ik weet natuurlijk niet welke editor er is gebruikt maar op een irc
>> kanaal waar ik redelijk vaak zit krijgen we zo af en toe soortgelijke
>> meldingen en vaak blijkt dan dat er een non printable (als ik het goed
>> heb) karakter zit in het bestand. Vaak net boven het begin.
>>
>Ik had kladblok gebruikt. Gekopieerd op internet en gewoon geplakt met
>Ctrl+v. Later in Dreamweaver binnengehaald omdat het dan misschien wat
>overzichtelijker zou worden ivm kleurtjes & tags enzo.
>Toen kwam ik er toevallig achter dat wanneer ik een regel exact hetzelfde
>overnieuw intypte de parse error ook steeds 1 regel verder optrad.
>
>Ik heb het hele scriptje inmiddels opnieuw ingetypt en nu komen er
>inderdaad geen parse errors meer. Dit probleem is dus opgelost, ik vind
>het trouwens wel een beetje vreemd omdat ik altijd dacht dat zoiets met
>Kladblok niet kon gebeuren. Het script wordt dus netjes geparsed maar
>uploaden lukt nog steeds niet, hij geeft de boodschap dat het een foute
>extensie is (zowel bij Opera als bij IE), ook als ik de variabele
> $ext = "jpg gif png";
>leeg laat, dus zo:
> $ext = "";
Is het niet veel handiger om zelf scripts te (leren) schrijven i.p.v.
andermans zooi te moeten debuggen? Het komt maar zelden voor dat je
direct bruikbare stukjes code tegenkomt. 99 van de 100 keer moet je er
toch weer bugs of 'leuk bedacht, maar het werkt niet in de praktijk'
constructies uit halen (zelfs uit de javascripts die Dreamweaver
produceert).
--
Reply to nico@nctdevpuntnl (punt=.)
Bedrijven en winkels vinden? Adresboekje.nl