ik heb een script dat ik al meer als een jaar gebruik zonder problemen,
nu werkt dit script online perfect,
maar ik heb een exacte kopie lokaal in xampp draaien en dan krijg ik sinds kort
Parse error: syntax error, unexpected end of file in E:\xampp\htdocs\websites\website_2\wedstrijd.php on line 395
nu weet ik dat dit komt door een niet afgesloten statement maar als ik dan aan het eind
} } toevoeg werkt hij lokaal wel maar online niet en heb ik een lege pagina,
en geeft dreamweaver al aan dat er een fout in de broncode zit
weet iemand waar ik overheen kijk, kan dit komen door verschillen in php versies, al lijkt me dat sterk.
Je moet hem op de juiste plaats afsluiten. Wanneer je dit niet doet kan er een hele andere 'flow' onststaan. Zonder code kunnen we niks, maar door de haakjes goed in te laten springen zie je snel wat er fout gaat.
Kan het zijn dat je een probleem hebt in een andere file die je included en dat de 2 versies verschillend zijn (live met andere bestanden dan de lokale versie)? Inderdaad is op de juiste manieren tappen erg belangrijk voor de overzicht.
Ik zou echt de code moeten zien om specifiek te antwoorden (waarschijnlijk de hele code, dus dat wordt lastig).
ik ben redelijk secuur met inspringen maar toch kom ik er niet uit, vooral omdat lokaal en online exact dezelfde files draaien, heb deze namelijk net via ftp gedownload.
Het codefragment op plaatscode.be bestaat uit 381 regels, is dit wedstrijd.php, aangezien de foutmelding het heeft over regel 395? Hoe vaag de foutmelding ook is, lijkt me sterk dat PHP er regels bijverzint?
Heb je display_errors EN error_reporting lokaal aangezet?
Wat kan helpen is het volgende, niet zozeer met het oplossen van het probleem, maar wel met het beheersbaarder maken van je code:
- deel je programma op in stukken i.p.v. ellenlange (geneste) if/elseif/else structuren
- voorzie je afsluitende accolades van annotatie, eventueel voorzien van extra informatie van wat er zojuist is gebeurd bijvoorbeeld:
en ook toch controleren of config.inc.php niets raars heeft.
Daarnaast nog even de commentaar regels weghalen (daar heb ik een keer problemen mee gehad, bleek dat de enters (\r) eruit waren door een type-verschil van het bestand ofzoiets.
lokaal staat display_errors en error_reporting aan,
het verschil in regel nummers komt omdat achteraan de file een aantal lege regels stonden welke ik niet mee gekopieerd heb.
die tip over de afsluiten accolades is een goeie, die ga ik gebruiken.
ik wil in de toekomst deze en de andere scripts omschrijven naar OOP en dus opdelen in classes maar daar heb ik de moed nog niet voor gehad om aan te beginnen naast school
ik zal alle commentaar eens verwijderen en kijken of het verschil opleverd
<?php
$DB['dbhost'] = "localhost"; // Mysql host
$DB['dbuser'] = "usr"; // Mysql gebruiker
$DB['dbpas'] = "...."; // Mysql wachtwoord
$DB['dbname'] = "db"; // Mysql database
//$mysqli = new mysqli($DB['dbhost'], $DB['dbuser'], $DB['dbpas'], $DB['dbname']);
mysql_connect($DB['dbhost'],$DB['dbuser'],$DB['dbpas']) or die ("<CODE>Sorry, connectie is verbroken.</CODE>");
mysql_select_db($DB['dbname']) or die ("<CODE>Sorry, Onze database is tijdelijk niet bereikbaar.</CODE>");
?>
<?php
$DB['dbhost']="localhost";// Mysql host
$DB['dbuser']="usr";// Mysql gebruiker
$DB['dbpas']="....";// Mysql wachtwoord
$DB['dbname']="db";// Mysql database
//$mysqli = new mysqli($DB['dbhost'], $DB['dbuser'], $DB['dbpas'], $DB['dbname']);
mysql_connect($DB['dbhost'],$DB['dbuser'],$DB['dbpas']) or die("<CODE>Sorry, connectie is verbroken.</CODE>");
mysql_select_db($DB['dbname']) or die("<CODE>Sorry, Onze database is tijdelijk niet bereikbaar.</CODE>");
Waar ik wel eens tegenaan liep met WAMP was het volgende: als ik <? gebruikte in plaats van <?php liep ik ook wel eens tegen zo'n "unexpected T_END" foutmelding aan (steevast aan het einde van het desbetreffende PHP-bestand). Ook <?= werkt dan niet. Ik ben het inmiddels gewend om <?php en <?php echo ... te gebruiken in plaats van <? en <?=.
Dit hangt samen met de short_open_tag-setting. Mogelijk gooit die in een van je PHP bestanden roet in het eten?
Ergo: controleer deze instelling met phpinfo() en speur je code af naar de korte openingstags <? en <?=.
Het is al opgelost, soort van.
ik heb alle code in een nieuw bestand gekopieerd en dat werkt als een zonnetje, maar zo gauw ik dat specifieke bestand van de server haal werkt het niet offline,
maar heb dus nu gekopieerd opgeslagen onder andere naam en het werkt als een trein.
short tags staan uit, ik gebruik tegenwoordig ook alleen <?php etc, maarja waarschijnlijk zit er een ftp fout ergens ofzo anders aangezien het in een nieuw bestand wel werkt.
Gesponsorde links
Je moet ingelogd zijn om een reactie te kunnen posten.