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

website vereniging, wsod na server crash

Pagina: 1
Acties:

Verwijderd

Topicstarter
Afgelopen nacht is de server waar de website van de vereniging op draait gecrashed.
Nu is dit verder allemaal goed gekomen we zijn opgepakt door de backup server.

Echter deze backup server beschikt over nieuwe software php 5.4 tegenover 5.3 van de vorige.
Hierbij is het foto album over de zeik gegaan (wsod).

Inmiddels ben ik al een paar uur bezig met fouten op te lossen maar ik ben geen php programmeur en deze site heb ik jaren terug ooit eens gebouwd. En draait ook nog op verouderde software (phpbb2).

Maar aangezien hij verder altijd prima draaide en voldoet aan de wensen plus dat migreren naar een ander pakket niet zo eenvoudig is, is dat prima.

Nu zoek ik echter hulp bij de laatste paar errors ik loop daar echt op vast.
De foutmeldingen heb ik al zichtbaar gemaakt op de betreffende pagina.
De site is *snip* en als je op foto album klikt komen de problemen te voorschijn.

Het probleem zit hem zo te zien in de laatste error:
code:
1
E_COMPILE_ERROR Error in file »album_hierarchy_functions.php« at line 871: Call-time pass-by-reference has been removed


De code hiermee overeenkomend is:
code:
1
2
3
4
5
    // do this for each sub category... recursive
    for ($i=0; $i < count($album_data['sub'][$cur_cat_id]); $i++)
    {
        album_get_sub_cat_ids($album_data['sub'][$cur_cat_id][$i], &$cats);
    }


ik heb al wel gevonden dat er de nodige wijzigingen zijn vanaf php5.3 naar php5.4 maar ik zie even niet wat er fout gaat met deze functie? Wie heeft hier meer kennis over en kan ons hierbij helpen?

[ Voor 0% gewijzigd door RobIII op 28-09-2014 22:30 ]


  • FrameWork.
  • Registratie: September 2007
  • Laatst online: 03:44
code:
1
2
// Line where it all goes wrong ;-)
        album_get_sub_cat_ids($album_data['sub'][$cur_cat_id][$i], &$cats);

Dit, &$cats, gaat fout. De ampersand geeft de pass-by-reference weer die niet meer in PHP 5.4 zit en dus de foutmelding retourneert die jij krijgt.

Ik ken het pakket verder niet, maar mogelijk is upgraden naar een nieuwe versie van de album software een optie.

[ Voor 15% gewijzigd door FrameWork. op 27-09-2014 15:29 ]


Verwijderd

Topicstarter
nieuwere versies zijn helaas niet beschikbaar, het is echt out dated software.

is hier een eenvoudige oplossing voor?

  • FrameWork.
  • Registratie: September 2007
  • Laatst online: 03:44
Je kan proberen om de ampersand te verwijderen en kijken of het werkt echter is het denk ik beter om naar andere albumsoftware over te stappen. Ik ben persoonlijk niet zo'n voorstander om het zo op te lossen ;)

  • Osiris
  • Registratie: Januari 2000
  • Niet online
Zie ook: Passing by Reference

Note: There is no reference sign on a function call - only on function definitions. Function definitions alone are enough to correctly pass the argument by reference. As of PHP 5.3.0, you will get a warning saying that "call-time pass-by-reference" is deprecated when you use & in foo(&$a);. And as of PHP 5.4.0, call-time pass-by-reference was removed, so using it will raise a fatal error.
Ik denk dat je even goed naar de functiedefinitie van album_get_sub_cat_ids() moet kijken en hoe die functie in de rest van de PHP-bestanden aangeroepen wordt.

Indien de functiedefinitie zónder pass-by-reference is en er in de rest van de PHP-bestanden consistent gebruik gemaakt wordt van call-time pass-by-reference (wat nu dus niet meer ondersteund wordt), dan is het mijns inziens een kwestie van het amperstandje toevoegen aan de functiedefinitie (op de goeie plek ;)) en hem weghalen op alle plekken waar album_get_sub_cat_ids() aangeroepen wordt.

Wordt het door elkaar gebruikt, dan heb je een groter probleem :P

Verwijderd

Topicstarter
hmm de & verwijderen heeft als gevolg dat de pagina weer laad.. maar geen afbeeldingen laat zien. en een hele waslijst aan errors erbij krijg. (kwam dit ook al tegen op de php site).

andere album software gaat helaas niet zomaar kunnen. er zitten 5000 fotos in deze album. en er is geen conversie tool beschikbaar voor dit pakket.

ik ben echt niet thuis in php,, dus sorry dat ik de helft van je bericht niet begrijp osiris.
Ben in de achtergrond bezig om me in veel dingen in te lezen, maar dat kost wel even wat tijd. Iets dat er eigenlijk niet is omdat we een van de grootste evenementen van het jaar hebben dit weekend. Dus de stress is hier flink aanwezig.

Verwijderd

Topicstarter
inmiddels weer paar errors kunnen lokaliseren maar nog niet helemaal begrepen waarom dit een error genereerd.
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
    function sql_fetchrowset($query_id = 0)
    {
        if(!$query_id)
        {
            $query_id = $this->query_result;
        }
        if($query_id)
        {
            unset($this->rowset[$query_id]);
            unset($this->row[$query_id]);
            while($this->rowset[$query_id] = @mysql_fetch_array($query_id))
            {
                $result[] = $this->rowset[$query_id];
            }
            return $result;
        }
        else
        {
            return false;
        }


Het commando mysql_fetch_array is per php 5.4 niet meer ondersteund.. echter kan ik hier geen directe oplossing voor terug vinden? waardoor kan ik dit stuk dan vervangen?

  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
Kan je de backup niet overzetten naar een oudere server?

Verwijderd

Topicstarter
ben gebonden aan deze server, en uiteindelijk zal ook de oude server overgaan naar 5.4 of 5.5.
dus deze problemen hadden dan ook gekomen. beter is om het nu op te lossen dat we weer even verder kunnen.

  • synoniem
  • Registratie: April 2009
  • Niet online
Zo te zien kan je ipv mysql_fetch_array wel mysqli_fetch_array gebruiken.

Verwijderd

Topicstarter
dat had ik inderdaad ook gevonden en geprobeerd maar helaas krijg ik dan een mysql error...

Algemene fout Message:

Couldn't obtain reports information<br /><br /><b><u>DEBUG MODE</u></b><br /><br />SQL Error : 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ')
AND r.topic_id = t.topic_id' at line 3<br /><br />SELECT r.report_status
FROM ar_post_reports r, ar_topics t
WHERE t.forum_id IN ()
AND r.topic_id = t.topic_id<br /><br />Line : 392<br />File : page_header.php

[ Voor 73% gewijzigd door Verwijderd op 28-09-2014 00:47 ]


  • Barryvdh
  • Registratie: Juni 2003
  • Laatst online: 21-11 14:12
http://php.net/manual/en/function.mysql-fetch-array.php
Daar staat dat hij deprecated is vanaf 5.5 en in de toekomst verwijderd wordt, dus die kan je nog wel gebruiken. Wat voor fout krijg je precies?
In 5.4 zijn ook veel dingen deprecated of geven ze waarschuwingen, maar niet alles is fataal voor de werking. Je kan je error reporting instellen dat hij notices, deprecation messages en warnings etc niet toont. Zie http://php.net/manual/en/function.error-reporting.php

En je zal inderdaad dit moeten fixen voor de langere termijn, maar als je haast hebt zou ik dit op een 5.3 server zetten (die zijn er nog genoeg) en dan rustig op zoek gaan naar een manier om te upgraden. Als je verouderde gallery /forum software draait, moet je toch ooit upgraden. Als ze niet meer bijgehouden worden, betekent dat waarschijnlijk ook dat ze niet meer veilig zijn.. En je gaat er sowieso meer problemen mee tegenkomen in de toekomst.

En je kan niet zomaar mysql en mysqli door elkaar gebruiken volgens mij, sowieso is dat niet de bedoeling. Mysql_* is wel deprecated maar werkt nog steeds..

[ Voor 7% gewijzigd door Barryvdh op 28-09-2014 00:59 ]


  • Damic
  • Registratie: September 2003
  • Laatst online: 00:41

Damic

Tijd voor Jasmijn thee

Mysqli voor phpbb2 http://www.phpbb2refugees.com/viewtopic.php?t=1023 posted by achaab op Sun Feb 10, 2013 7:33 pm

Al wat ik aanraak werk niet meer zoals het hoort. Damic houd niet van zijn verjaardag


Verwijderd

Topicstarter
@damic,

die changes hebben toepassing op de basis en heb ik gisteravond zitten doorvoeren. helaas is mijn provider beetje erg vervelend omdat die na ruim 1,5 dag nog steeds ruzie heeft met de dns gegevens... kan regelmatig mijn sites niet bereiken via mijn wifi. terwijl ik er wel bij kan via mobiel internet..

dus dat werkt allemaal al verdomd lastig hier...

die changes hebben verder geen invloed op het foto album.

Verwijderd

Topicstarter
probleem is bovenwater...
2x een amperand verwijderd in alle pagina's .... en alles werkt weer.

site is nu dus php 5.4 compatable.


code:
1
E_COMPILE_ERROR Error in file »album_image_class.php« at line 1900: Call-time pass-by-reference has been removed


code:
1
1900: settype(&$this, 'null');


iedereen bij deze nog bedankt voor de hulp en het mee denken!

[ Voor 15% gewijzigd door Verwijderd op 28-09-2014 20:12 ]

Pagina: 1