Debian Squeeze php frissitési probléma

Fórumok

Sziasztok!

Örököltem egy Debian Squeeze szervert amire php 5.3-ró 5.4-re kellet frissitenem.
Ez alapján történt:
https://davejamesmiller.com/blog/installing-php-5-4-on-debian-6-squeeze

A jelenség, hogy a php nem fut le rendesen:

error.log
[Wed Jun 24 07:26:35 2015] [error] [client 87.229.80.89] PHP Notice: Undefined variable: valtozo in /home/oldal.hu/webdownload/oldal_blokkok/menu.php online 44, referer: http://oldal.hu/index.php?valtozo=oldalneve

Előre is köszönöm!

Hozzászólások

De lefut, csak a Notice be van kapcsolva a php.ini-ben és dobja a hibát
Meg ahogy nézem, olyat használ az oldal ami nem ajánlott. Url paramétert változóként használ a kódban, ami igen veszélyes tud lenni.

http://www.redphoto.hu

Amit ide írtál hiba, az csak annyit jelent, hogy definiálva a változód. Vagyis nincs kezdőértéke és később sem kap valószínűleg. A probléma a változó értékének átadásának módszerével lehet. $_GET , $_POST körül érdemes nézelődni.

Vagy kiveszed,hogy ne írja a hibát ki az error log beállításoknál a PHP.ini-ben, ha ettől még megy az oldal rendesen.

Valószínűleg régi a kód és a 5.4-nél már komoly változtatások vannak bevezetve.

Gyanítom, hogy az 5.3-ban a register_globals be volt kapcsolva, a $_GET['valtozo']-ra $valtozo-ként hivatkoztál. Mivel 5.4-ben már nincs register_globals, így át kell írnod a szkripted..
--
Coding for fun. ;)

Egy olyan helyen, ahol unmaintained kód volt, és 5.4-re kellett frissíteni, a következő kódot futtatom auto_prepend_file-ban:

if (!ini_get('register_globals')) {
$superglobals = array($_SERVER, $_ENV,
$_FILES, $_COOKIE, $_POST, $_GET);
if (isset($_SESSION)) {
array_unshift($superglobals, $_SESSION);
}
foreach ($superglobals as $superglobal) {
extract($superglobal, EXTR_SKIP);
}

}

--
Coding for fun. ;)

Arra, amelyik a hibát dobja. Mindegy, ezek szerint minden hosztolt weboldalt 5.4 kompatibilissé kell tenni. Nem kis munka lesz... :(

Lépések:

1. állítsd vissza az 5.3-at (legalább addig menjenek az oldalak, amíg az átállás megtörténik)
2. értesíts mindenkit, hogy 5.4-re tértek át, sorold fel nekik az érintett változásokat (safe mode, magic quotes, register globals, register long arrays, mbstring.script_encoding, break, continue, salsa10, salsa20 megszűnnek, isset, empty másképp működnek, mysqli_* aliasok megszűnnek, stb.)
3. vezess naplót az ügyfelek munkájáról
4. amikor mindenki készen áll, snapshot, majd frissítés, és nagy levegő...
5. az apróságokat bereszeled (ha vannak)
6. mindenki örül

--
Coding for fun. ;)

Ha a szerveren sok a php szkript, akkor lehet, hogy tökönlövés volt az 5.4-re frissítés (mi indokolta azon túl, hogy frissebb?).
--
Coding for fun. ;)

troll on.
Nem irigyellek, ez nem szekrény, ez egy egész gardrób szoba csontvázakkal teli.., és ha nem vagy ügyes, előbb utóbb egy zombihadsereg lesz belőle
troll off.

Ehhez kapcsolódó kérdés mindenkihez, hogy lehet ügyesen/hatékonyan/ügyfél barát módon a régi ügyfeleket 'rábírni', hogy x idő után a kódjuk elavult lesz, nem megy új rendszeren, csináljanak vele valamit?

Megoldást leíróm hátha más is belefut ebbe a hibába:
/functions/strings.php fájlban át kell írni a következő képpen:

if (check_php_version(5, 2, 3))
return htmlspecialchars($string, $flags, $encoding, $double_encode);
if (check_php_version(5, 2, 3)) {
return htmlspecialchars($string, ENT_COMPAT|ENT_HTML401, 'ISO-8859-1', $double_encode);
//return htmlspecialchars($string, $flags, $encoding, $double_encode);
}

return htmlspecialchars($string, $flags, $encoding);
}