Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien
Toon posts:

PHP: Lokaal werkt uitlezen database, op de server niet

Pagina: 1
Acties:

Onderwerpen


Verwijderd

Topicstarter
Ik ben al een dag aan het zoeken naar de oorzaak, maar ik kan het niet vinden.

Ik heb de volgende code in de pagina:

PHP:
1
2
3
4
5
$db_connection = @mysql_connect ($config['db']['host'], $config['db']['user'], $config['db']['pass']) OR error (mysql_error(),$config, __LINE__, __FILE__, 0, '');
$db_select = @mysql_select_db ($config['db']['name']) or error (mysql_error(),$config, __LINE__, __FILE__, 0, '');

$sql = "SELECT story_id, story_url, story_title, story_time FROM stories order by story_id DESC LIMIT $pagina_start_rij, 70";
$result = mysql_query($sql, $db_connection) or die('Cannot Execute:'. mysql_error());


De inlogzooi staat in een aparte file die ik include. Lokaal draait alles goed, op de server krijg ik een lege pagina terug.

Any clues ?
error_reporting staat voluit aan, maar geeft geen errors.
De database online is dezelfde als de lokale, zelfde user en zelfde inhoud.

Online staat: PHP 5.1.6 en Mysql 5.0.77
Lokaal staat: PHP 5.3.1. en Mysql 5.1.41

Ik vermoed dat het dus in die versie verschillen zit ?

[ Voor 0% gewijzigd door BtM909 op 20-09-2011 15:28 ]


  • TJHeuvel
  • Registratie: Mei 2008
  • Niet online
Haal eens de error suppresion (@) weg, dan zul je zeer waarschijnlijk zien dat je inlog gegevens niet kloppen.

[ Voor 6% gewijzigd door TJHeuvel op 09-09-2011 15:23 ]

Freelance Unity3D developer


  • Voutloos
  • Registratie: Januari 2002
  • Niet online
Zelfs 5.2 is al tijden deprecated, dus laat in vredesnaam iets aan die versie doen of zoek een propere hoster.

[ Voor 4% gewijzigd door Voutloos op 09-09-2011 15:28 ]

{signature}


Verwijderd

Topicstarter
@tj: haalt niets uit en natuurlijk zijn de inloggegevens goed.
@vout: ja, goed plan, ga ik meteen doen.

  • Spiked
  • Registratie: Mei 2008
  • Laatst online: 21-11 09:51
wat doet je "error(..)" functie, en hoe ziet hij eruit?

  • SjaakCobain
  • Registratie: Augustus 2004
  • Laatst online: 05-11 14:59
Misschien geeft ie ergens anders in de pagina een php error en worden die niet geprint.

Probeer ini_set('display_errors',1); eens toe te voegen.

Be kind to your knees, you’ll miss them when they’re gone.


  • MueR
  • Registratie: Januari 2004
  • Laatst online: 11:23

MueR

Admin Devschuur® & Discord

is niet lief

Voutloos schreef op vrijdag 09 september 2011 @ 15:28:
Zelfs 5.2 is al tijden deprecated, dus laat in vredesnaam iets aan die versie doen of zoek een propere hoster.
5.2 wordt nog enorm veel gebruikt overigens, en met reden. Een aantal wijzigingen in 5.3 breken te veel software, zeker de kant en klare pakketten zoals Joomla e.d. Nu weet ik dat je "updaten" roept, dat doe ik ook, maar met customized pakketten is dat vaak nog tricky.

Anyone who gets in between me and my morning coffee should be insecure.


  • Bv202
  • Registratie: Oktober 2006
  • Laatst online: 14-11-2021
MueR schreef op vrijdag 09 september 2011 @ 17:10:
[...]

5.2 wordt nog enorm veel gebruikt overigens, en met reden. Een aantal wijzigingen in 5.3 breken te veel software, zeker de kant en klare pakketten zoals Joomla e.d. Nu weet ik dat je "updaten" roept, dat doe ik ook, maar met customized pakketten is dat vaak nog tricky.
Dat klopt wel, maar 5.1.6 (welke hij gebruikt) is een versie uit 2006. Ik ken véél hostings dat nog 5.2 draaien, maar 5.1 is echt wel onaanvaardbaar.

Verwijderd

Topicstarter
Volgens mij zit er een probleem met includes op mijn server. Relatieve paden straft hij sowieso af: "open_basedir restriction in effect."

Als ik vervolgens het hele pad gebruik, include hij de files wel, maar dan worden de variabelen in het geinclude file niet overgenomen:

simpel weergeven situatie:

config,php
$host = ''localhost';

pagina.php
include config.php
echo "$host";
Undefined variable: $host

Schiet mij maar lek. Als ik vervolgens die variabelen (= niet veilig uiteraard) om te connecten in pagina.php
zet, werkt het wel. Met dien verstanden dat er connectie wordt gemaakt, maar er geen data wordt getoond ...

En lokaal werkt het als een zonnetje. Mijn conclusie is: de php versie op de server zuigt. Am I wrong ?

Verwijderd

Topicstarter
Ok, ik heb hier nu bewijs dat de database werkt. Het probleem zit hem puur in dat hij uit include files niet de variabelen overneemt en dan de melding geeft: Undefined variable

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Vallen die variabelen niet binnen de scope van een of andere functie? Dit lijkt me toch wel heel eenvoudig te debuggen. Plaats wat echo's, zet error en notice reporting aan, vervang include() door require_once(), zet geen apenstaartjes voor functies, doe een var_dump op je database handle...

Ook heb je nog niet beantwoord wat error() precies doet.

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


  • joostvanpinxten
  • Registratie: Maart 2007
  • Laatst online: 03-09 12:50
Hier lijkt me wat raars aan de hand.

Wat doet het volgende?

config.php
PHP:
1
2
3
<?php
echo 'config';
?>


pagina.php
PHP:
1
2
3
4
<?php
include("config.php");
echo 'pagina';
?>


Verwachte resultaat is configpagina uiteraard :-)

[ Voor 7% gewijzigd door joostvanpinxten op 09-09-2011 23:03 ]


Verwijderd

Topicstarter
error heb ik weggehaald.

De variabelen staan gewoon op een rijtje, niet in functies:
config.php:
$dbhost = 'localhost';
etc etc

in de pagina.php:
include config.php (require en include_once ook geprobeerd)
echo "$dbhost"; <-- leeg resultaat.
isset geeft leeg resultaat.

Nogmaals dezelfde code werkt op mijn lokale server met php 5.3 wel ...
De code moet dus goed zijn, of ik moet iets speciaals doen voor 5.1

Het includen is ook gecheckt door een echo in het include file te zetten. Die echo komt netjes terecht
in pagina.php.

Verwijderd

Topicstarter
@joost: ja, dat werkt. Zie mijn vorig reply dat ik typte toen jij typte :)

  • joostvanpinxten
  • Registratie: Maart 2007
  • Laatst online: 03-09 12:50
Verwijderd schreef op vrijdag 09 september 2011 @ 23:06:
@joost: ja, dat werkt. Zie mijn vorig reply dat ik typte toen jij typte :)
AUB gebruik maken van de edit-functie, anders wordt het zo'n ellenlange lijst, zonder dat het echt waarde toevoegt.

En het blijft raar. Als je inderdaad in het include bestand komt, en dat wordt ge-echoed maar de vars worden niet ingesteld, dan zou ik met een minimale example waarin het niet goed gaat, maar eens naar je hosting gaan. Succes ermee iig!

Verwijderd

Topicstarter
Bedankt voor het meedenken in ieder geval !

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

En het includen doe je ook niet binnen een functie? En wat als je define() gebruikt in plaats van gewone variabelen? Het blijft een beetje gissen naar wat je wel en niet geprobeerd hebt, en hoe je code er momenteel uitziet.

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Verwijderd

Topicstarter
@8088: ik schreef al eerder dat ik het niet in functies gebruik. Define heb ik niet gebruikt. Maar ik moet toch gewoon met variabelen kunnen werken ?
Maar goed, we blijven zoeken in de code, terwijl het daar niet in zit (code werkt lokaal wel goed).
Eerst maar eens kijken wat mijn host doet.

  • twiFight
  • Registratie: Januari 2002
  • Niet online
Verwijderd schreef op vrijdag 09 september 2011 @ 23:24:
Maar goed, we blijven zoeken in de code, terwijl het daar niet in zit (code werkt lokaal wel goed).
Eerst maar eens kijken wat mijn host doet.
Dat het niet in je code kan zitten is geen feit. Vooral met debuggen geldt vaak "assumption is the mother of all fuck ups". Het kan bepaalde code zijn die in de oude PHP versie niet goed werkt, maar in de nieuwe wel. Is het probleem dan de PHP versie of de code zelf?

  • 8088
  • Registratie: December 2000
  • Niet online

8088

NaN

Verwijderd schreef op vrijdag 09 september 2011 @ 23:24:
@8088: ik schreef al eerder dat ik het niet in functies gebruik.
Je schreef dat je de variabelen niet binnen een functie zette. Dat is iets anders dan het includen van een bestand.
Define heb ik niet gebruikt. Maar ik moet toch gewoon met variabelen kunnen werken ?
Ja, dat zou je moeten kunnen. Maar ik kan vanaf hier niet zien met welke scopes je te maken hebt en defines zijn dan een veilige optie (sowieso als het om zaken als database credentials gaat - die wil je toch niet laten overschrijven). Maar als het teveel moeite is...
Eerst maar eens kijken wat mijn host doet.
En daarna verdere mogelijkheden uitsluiten? Vreemde volgorde.

Do you seek to engage in or have you ever engaged in terrorist activities, espionage, sabotage, or genocide?


Verwijderd

Topicstarter
Nog even een follow-up voor het archief: site staat met dezelfde code nu op een andere host met php 5.2. Draait als een zonnetje !

Verwijderd

Bv202 schreef op vrijdag 09 september 2011 @ 17:20:

Dat klopt wel, maar 5.1.6 (welke hij gebruikt) is een versie uit 2006. Ik ken véél hostings dat nog 5.2 draaien, maar 5.1 is echt wel onaanvaardbaar.
Waarom? Red Hat 5 en CentOS 5 worden nog ondersteund tot 2014, dus an sich is er vanuit serverbeheeroogpunt geen strict noodzakelijke reden om niet met PHP 5.1.6 te draaien. Aan de versie van MySQL te zien gaat het zeker om één van die twee distro's.

Upgraden op dat soort systemen kan wel, maar is niet helemaal zonder risico's. Je moet wel weten wat je doet.

Pas sinds 23 augustus 2011, nog geen maand geleden, is bekend gemaakt dat er écht niet meer ontwikkeld wordt aan PHP 5.2. Daarvoor waren er vooral onduidelijke verhalen. Aan het eind van de 5.2.x reeks is er nogal geblunderd en dat heeft de berichtgeving niet veel duidelijker gemaakt.
Pagina: 1