[PHP] Script laat site crashen na update naar PHP 5.1.6

Pagina: 1
Acties:
  • 1.265 views

Acties:
  • 0 Henk 'm!

  • Captain Pervert
  • Registratie: Mei 2000
  • Laatst online: 05-03 12:19
Recent heeft de hostingprovider van onze site de PHP-versie geupdate naar 5.1.6 (geen idee wat het daarvoor was, wel versie 5, niet 4). Sindsdien zijn een paar dingen merkbaar anders. Register_globals doet het bijv. niet meer waardoor een aantal oude scripts, die hier gebruik van maakten, de prullenbak in konden. Ik ben zelf geen PHP-er, dus aanpassen was onbegonnen werk.

Een ander script wat we gebruiken is een nieuwsscript. Hierbij kun je in de adminmodule nieuwscategorieën toevoegen. En dit toevoegen resulteert in een complete crash van de site, sterker nog, van de server, want alle sites die op dezelfde server gehost zijn, gaan een kwartier offline.

WTF :?

De functie die de boosdoener is, is dit:


PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
function addcat()
{
  is_admin();
  global $language, $dbQueries, $db_prefix;

  $_POST['catname'] = trim($_POST['catname']);
  $_POST['caticon'] = trim($_POST['caticon']);

  if (!$_POST['catname'])
  {
    fatal_error($language['CONTENT_ERRORREQUIREDFIELD']);
  }

  /* Check if Category Name already exists */
  $result = mysql_query('SELECT catname FROM ' . $db_prefix . 'categories WHERE catname = \'' . $_POST['catname'] . '\'');
  $dbQueries++;

  if (mysql_numrows($result) != 0)
  {
    fatal_error($language['CONTENT_CATEXISTS']);
  }

  mysql_query('INSERT INTO ' . $db_prefix . 'categories (catname,caticon) VALUES (\'' . $_POST['catname'] . '\', \'' . $_POST['caticon'] . '\')');
  $dbQueries++;

  echo "            {$language['CONTENT_ADDEDCATSUCCESS']}<br>\n";
  echo "            <a href=\"index.php?action=cats\">{$language['CONTENT_BACK']}</a>\n";

  checkForIE();
}



Wat gebeurt hier nou, wat PHP 5.1.6 niet pikt? :?

Helaas wordt het nieuwsscript niet meer ondersteund, de makers reageren ook niet, dus ik hoop dat hier slimme tweakers zitten die kunnen helpen :)

Porsche 928 - It's about as fast as you can go without having to eat airline food.


Acties:
  • 0 Henk 'm!

  • WoRsTeNBoY
  • Registratie: Januari 2005
  • Laatst online: 21-01-2024
wat is de foutboodschap?

Acties:
  • 0 Henk 'm!

  • Janoz
  • Registratie: Oktober 2000
  • Laatst online: 20:06

Janoz

Moderator Devschuur®

!litemod

Wat doen fatal_error() en checkForIE()?

Ken Thompson's famous line from V6 UNIX is equaly applicable to this post:
'You are not expected to understand this'


Acties:
  • 0 Henk 'm!

  • OxiMoron
  • Registratie: November 2001
  • Laatst online: 08-07 14:27
Sql injection alert :S

Albert Einstein: A question that sometime drives me hazy: Am I or are the others crazy?


Acties:
  • 0 Henk 'm!

Verwijderd

Hier lijkt geen fout in te zitten, dit zou dan in fatal_error() of checkForIE() kunnen zitten... Zou je die kunnen posten?

edit:
Wat Janoz zei dus..

[ Voor 12% gewijzigd door Verwijderd op 03-07-2008 14:59 ]


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Kijk eens in de error log van apache? Weet je wel zeker dat de server crasht door jouw script?

Verder wat zijn de instellingen van display_error, error_reporting en display_startup_errors?

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • Voutloos
  • Registratie: Januari 2002
  • Niet online
  • sql injections, sql injections, sql injections
  • slechte controle input
  • is_admin() grijp blijkbaar (hopelijk) in indien geen admin, slecht design
  • allerlei zaken staan op een onlogische plek
  • ipv $_POST overal te benaderen had onder andere deze functie gewoon parameters kunnen hebben
  • checkIE klinkt als een browser specifiek iets dat hier niets te zoeken heeft
  • global vars
  • global $dbQueries jankt gewoon om een db abstractie laag die dit bij elke query automatisch telt
  • check op return value mysql_query mist
  • ipv fatal_error() kan je ook met exceptions ed werken
  • variabelen in double quoted strings leest naadje
  • etc etc
En de PHP update zal wellicht naar 5.2.6 zijn. ;)

{signature}


Acties:
  • 0 Henk 'm!

  • Captain Pervert
  • Registratie: Mei 2000
  • Laatst online: 05-03 12:19
LuCarD schreef op donderdag 03 juli 2008 @ 15:02:
Kijk eens in de error log van apache? Weet je wel zeker dat de server crasht door jouw script?

Verder wat zijn de instellingen van display_error, error_reporting en display_startup_errors?
Die heb ik dus niet, ik run geen eigen server, maar heb een hostingaccount.
En ja, het is 100% zeker weten dit script, heb het al drie keer gehad.

Verder zijn de meeste termen die jullie gebruiken Chinees voor mij. Zou iemand eens een stukje code kunnen verbeteren waarvan hij denkt dat de kans groot is dat dat het probleem oplost?

Porsche 928 - It's about as fast as you can go without having to eat airline food.


Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Captain Pervert schreef op donderdag 03 juli 2008 @ 15:51:
[...]

Die heb ik dus niet, ik run geen eigen server, maar heb een hostingaccount.
En ja, het is 100% zeker weten dit script, heb het al drie keer gehad.

Verder zijn de meeste termen die jullie gebruiken Chinees voor mij. Zou iemand eens een stukje code kunnen verbeteren waarvan hij denkt dat de kans groot is dat dat het probleem oplost?
De code die we nu zien is niet helemaal 100% lekker, maar zou zeker de server niet moeten laten crashen. Dus of er is nog meer code, of de server is gewoon niet lekker geinstalleerd.

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • jelmervos
  • Registratie: Oktober 2000
  • Niet online

jelmervos

Simple user

Wat bedoel je met crashen? Krijg je fout meldingen? Hoe crasht de server precies?

"The shell stopped unexpectedly and Explorer.exe was restarted."


Acties:
  • 0 Henk 'm!

  • Captain Pervert
  • Registratie: Mei 2000
  • Laatst online: 05-03 12:19
Direct na het toevoegen van een categorie in het script krijg ik:
The website declined to show this webpage
HTTP 403
Most likely causes:
This website requires you to log in.

What you can try:
Go back to the previous page.

More information
(Heb Engelse IE7)
Als ik dan refresh, of de site opnieuw benader, kan de browser hem niet vinden. Er komt een timeout. De FTP doet het dan ook niet meer, en twee andere domeinnamen die ik op dezelfde server heb gehost doen het dan ook niet meer. :X
Is trouwens echt PHP 5.1.6 niet 5.2.6

Porsche 928 - It's about as fast as you can go without having to eat airline food.


Acties:
  • 0 Henk 'm!

  • Kwastie
  • Registratie: April 2005
  • Laatst online: 09:54

Kwastie

Awesomeness

Volgens mij kan een PHP script een server niet crashen, misschien in het ergste geval httpd.

[ Voor 5% gewijzigd door Kwastie op 03-07-2008 16:32 ]

When I get sad i stop being sad and be awesome instead


Acties:
  • 0 Henk 'm!

  • Terranca
  • Registratie: April 2000
  • Laatst online: 14-09 20:55
Voer je ergens in fatal_error() of is_admin() een redirect uit? Heb het zelf ook al een keer voor mekaar gekregen om een oneindige redirect-loop te veroorzaken waardoor de server het flink druk kreeg en onbereikbaar werd. En toch nog een spuit 11, omdat het zo belangrijk is: escape die database parameters fatsoenlijk, voor je het weet ben je al je data kwijt..

Acties:
  • 0 Henk 'm!

  • LuCarD
  • Registratie: Januari 2000
  • Niet online

LuCarD

Certified BUFH

Mail de provider...

Misschien dat die kunnen helpen, het ligt 100% zeker niet aan dit gedeelte van het php script dat de server crasht.
Kan je trouwens eens "Show Friendly errors" eens uit zetten en dan de pagina nogmaals bekijken?
( Tools -> Advanced -> Show Friendly HTTP Errors ( ongeveer 20 regels naar beneden )
Terranca schreef op donderdag 03 juli 2008 @ 16:37:
Voer je ergens in fatal_error() of is_admin() een redirect uit?
Nee
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
function is_admin()
{
  global $userDetails, $language;

  /* If the user isn't an Administrator, give an error message */
  if($userDetails['access'] != 'admin')
  {
    fatal_error($language['CONTENT_ERRORACCESSDENIED']);
  }
}

/* Quick Fix for IE browsers */
function checkForIE()
{
    if (stristr($_SERVER['HTTP_USER_AGENT'], 'MSIE'))
    {
?>
            <div style="height:300px;">
               &nbsp;
            </div>
<?php
    }
}

function fatal_error($error)
{
  global $language;

  echo '<b>' , $language['CONTENT_ERROR'] , '</b>: ' , $error , '<br /><a href="javascript:history.go(-1)">' , $language['CONTENT_BACK'] , '</a>';

  checkForIE();
  exit;
}

het is dit pakket: http://newsphp.sourceforge.net/

[ Voor 76% gewijzigd door LuCarD op 03-07-2008 16:41 ]

Programmer - an organism that turns coffee into software.


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Captain Pervert schreef op donderdag 03 juli 2008 @ 15:51:
Verder zijn de meeste termen die jullie gebruiken Chinees voor mij. Zou iemand eens een stukje code kunnen verbeteren waarvan hij denkt dat de kans groot is dat dat het probleem oplost?
Sorry, maar zoals je zelf ook goed weet hebben we daar op GoT geen trek in. Als termen "Chinees" zijn voor je, dan zoek je die op of wek je in elk geval de indruk dat je moeite doet om er zelf uit te komen. We gaat dus niet jouw debugwerk voor je doen.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • Kwastie
  • Registratie: April 2005
  • Laatst online: 09:54

Kwastie

Awesomeness

Je hebt dit dus niet zelf geprogrammeerd maar dit is het script van 'PHPnews' ? Volgens mij is dit project een beetje dood, probeer is zoiets als 'Cutephp'

[ Voor 40% gewijzigd door Kwastie op 03-07-2008 16:48 ]

When I get sad i stop being sad and be awesome instead


Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:02

Creepy

Tactical Espionage Splatterer

Sterker nog: we gaan hier niet het debugwerk van de makers van newsphp doen ;) Hier in PRG draait het om het *zelf* ontwikkelen van software, niet het support geven op een scriptje wat iemand heeft gedownload.

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney


Acties:
  • 0 Henk 'm!

  • Captain Pervert
  • Registratie: Mei 2000
  • Laatst online: 05-03 12:19
Op mijn verzoek is dit topic weer van het slot afgehaald, waarvoor dank.

De oplossing was heel anders dan je zou denken: de hosting provider had tijdens de upgrade kennelijk meer dingen veranderd, want op het moment dat het script werd uitgevoerd werd deze ineens geblokkeerd door de application firewall. Dit was ook terug te vinden in de error_log. De desbetreffende rule is op mijn verzoek door de hosting provider uitgezet. De server crashte ook niet, maar ik kreeg een tijdelijke IP ban, vandaar dat ik dacht dat de server down ging :D

(Offtopic:

Los daarvan was ik wel aardig gepikeerd over het sluiten van dit topic in eerste instantie, ik geef aan dat de makers van het script geen support meer geven, ten tweede geef ik ook aan zelf weinig van PHP te snappen (ik kan niet eens from scratch een script schrijven laat staan vreemde fouten opsporen), en ik was in de veronderstelling dat een expert met weinig moeite me zou kunnen helpen gezien omstandigheden. Strict genomen inderdaad een scriptrequest, maar sjongejonge, de 'regelementjes' dekken niet iedere individuele situatie hoor.)

Maar het werkt nu weer dus iedereen alsnog bedankt.

Porsche 928 - It's about as fast as you can go without having to eat airline food.


Acties:
  • 0 Henk 'm!

  • Noork
  • Registratie: Juni 2001
  • Niet online
Captain Pervert schreef op donderdag 10 juli 2008 @ 19:30:
Op mijn verzoek is dit topic weer van het slot afgehaald, waarvoor dank.

De oplossing was heel anders dan je zou denken[...]
Mooi om te horen. Vind 't ook netjes om de oplossing alsnog te geven.
ik geef aan dat de makers van het script geen support meer geven, ten tweede geef ik ook aan zelf weinig van PHP te snappen.
Dat is nu wel een beetje de essentie gan Got die je raakt. Als je weinig van PHP e.d. weet, kun je beter je vraag stellen op beginnersforum o.i.d. Fouten debuggen dien je zelf te doen.

Acties:
  • 0 Henk 'm!

  • Creepy
  • Registratie: Juni 2001
  • Laatst online: 20:02

Creepy

Tactical Espionage Splatterer

Met Noork dus. Sportief van je dat je de oplossing post maar je weet zelf ook heel goed waarom je topic is gesloten. Als je hoster iets veranderd is je hoster ook de eerste plek waar je support zou moeten vragen, vervolgens de makers van je script en als eventuele laatste plek GoT. Maar het is niet de bedoeling direct naar GoT te gaan om zo snel mogelijk een oplossing te scoren. Als je direct naar je hoster was gegaan was je een stuk sneller geholpen ;)

[ Voor 9% gewijzigd door Creepy op 10-07-2008 21:10 ]

"I had a problem, I solved it with regular expressions. Now I have two problems". That's shows a lack of appreciation for regular expressions: "I know have _star_ problems" --Kevlin Henney

Pagina: 1

Dit topic is gesloten.