![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 21.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Witam,
Próbuję przenieść na nowy serwer stronę internetową napisaną kilka lat temu w PHP i MySQL. Dotychczas serwis pracował w następującym środowisku:
Teraz chciałbym uruchomić go pod PHP 5.3.5 oraz MySQL 5.5.8 Pierwszą przeszkodą okazał się import bazy przy pomocy PHPMyAdmin. Przy każdej wyeksportowanej tabeli pojawił się wpis "TYPE=MyISAM", przez który nie można było zaimportować bazy. Zmiana na "ENGINE=MyISAM" pomogła i baza została zaimportowana do nowego środowiska. Teraz jednak zaczęły się schody... Skopiowałem wszystkie pliki serwisu, skonfigurowałem prawa dostępu do bazy danych, ustawiłem ścieżki dostępu do plików. Wywołuję w przeglądarce index.php i obok załadowanej treści i grafiki pojawiają się błędy typu:
Dodatkowo linki w menu nie przekierowują mnie do docelowych podstron (klikam i nic się nie dzieje). Jeśli jest to możliwe, to bardzo proszę o pomoc. |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
Twój kod pewnie jest napisany dla włączonej opcji REGISTER_GLOBALS.
Masz dwa rozwiązania: 1) Szybkie ale złe: włącz u siebie tę opcję 2) Dłuższe ale prawidłowe wszelkie odwołania do danych z forma czyli np. $forum_login musisz zamieniać na $_POST['forum_login'] Wszelkie odwołania da zmiennych z linków np. $jakaszmiennazlinka masz zamieniać na $_GET['jakaszmiennazlinka'] -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 21.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Twój kod pewnie jest napisany dla włączonej opcji REGISTER_GLOBALS. Masz dwa rozwiązania: 1) Szybkie ale złe: włącz u siebie tę opcję 2) Dłuższe ale prawidłowe wszelkie odwołania do danych z forma czyli np. $forum_login musisz zamieniać na $_POST['forum_login'] Wszelkie odwołania da zmiennych z linków np. $jakaszmiennazlinka masz zamieniać na $_GET['jakaszmiennazlinka'] Ad. 1. Włączenie opcji REGISTER_GLOBALS nie poprawiło sytuacji. Ad. 2. Przy błędzie w rodzaju: Notice: Undefined variable: dzial in "ścieżka_do_pliku\body.php" on line 4 poprawiłem zmienną na wzór $_GET['jakaszmienna']. Po tej zmianie pojawił się kolejny błąd o treści: Notice: Undefined index: dzial in "ścieżka_do_pliku\body.php" on line 4 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 36 557 Pomógł: 6315 Dołączył: 27.12.2004 ![]() |
ad1) A po włączeniu tej opcji zrestartowałeś serwer?
ad2) To był przykład. Jeślia ta dana idzie z url to ma być $_GET. jesli z post to ma być $_POST Ale jak włączyłeś register globals i zrestartowałeś serwer to już punkt dwa nie jest ważny. Jeśli po włączeniu register_globals i restarcie serwera nadal ci nie działa, to widać chodziło o coś innego. Inna kwestia to taka, że jesli problemem jest tylko i wyłącznie pokazywanie błędów NOTICE, to wyłącz wyświetlanie tych błędów. Możesz oczywiście spróbować ich nie generować, czyli zanim dobierzesz się do jakiejś zmiennej to najpierw swrawdź czy ona w ogóle istnieje - isset() -------------------- "Myśl, myśl, myśl..." - Kubuś Puchatek || "Manual, manual, manual..." - Kubuś Programista "Szukaj, szukaj, szukaj..." - Kubuś Odkrywca || "Debuguj, debuguj, debuguj..." - Kubuś Developer |
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 21.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Po włączeniu opcji REGISTER_GLOBALS zrestartowałem serwer i nie stosowałem się do punktu nr 2.
Ukrycie błędów nic mi nie daje, ponieważ linki w menu nadal nie działają. Funkcja isset wskazuje, że np. zmienna 'id' nie istnieje. W takim razie jakim cudem zmienna ta była widoczna w starym środowisku PHP i MySQL? |
|
|
![]()
Post
#6
|
|
![]() Grupa: Zarejestrowani Postów: 677 Pomógł: 89 Dołączył: 31.08.2003 Skąd: Warszawa Ostrzeżenie: (0%) ![]() ![]() |
Błędy się naprawia, nie ukrywa. Więc może czas przepisać ten fragment kodu który nie działa na taki który będzie zgodny z PHP5?
-------------------- |
|
|
![]()
Post
#7
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 21.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Poniżej zamieszczam kod php z pliku, który generował kilka błędów na stronie głównej. Czy może ktoś wskazać w nim elementy jakie należy poprawić dla zgodności z PHP5?
Kod <?
$id_bak=$id; if(!$id and !$dzial and !$search) $dzial="wskrocie"; $sql_t="select count(*) from $tabela_tekst where id='$id'"; $result_t=@mysql_query($sql_t,$db); $myrow=@mysql_fetch_array($result_t); $num_rows=$myrow[0]; if(!$num_rows and $show_default) $dzial="wskrocie"; if($id){ $sql="select opis, sort from $tabela_menu where id='$id'"; $result=@mysql_query($sql,$db); $myrow=@mysql_fetch_array($result); $opis1=$myrow["opis"]; $sort1=$myrow["sort"]; } if ($dzial=="mapa") { @include "mapa.php"; } elseif ($dzial=="ksiega") { echo "<p align=center><B><font style='font-width: 14px;'>Księga goci</font></B></p>"; echo "<p align=center><B><font style='font-width: 12px;'><a class=r HREF=\"index.php?dzial=dodaj\">Dodaj wpis</a></font></B></p>"; include "plugins/ksiega/ksiega.php"; } elseif ($dzial=="dodaj") { echo"<p align=center><a class=r HREF=\"index.php?dzial=ksiega\"><b>Wróć do ogl±dania wpisów</b></a></p>"; include "plugins/ksiega/dodaj.php"; } elseif ($dzial=="stat") { @include "plugins/staty/statystyki.php"; echo"<br>"; } elseif ($dzial=="statall") { @include "plugins/staty/stat_all.php"; echo"<br>"; } elseif ($dzial=="stattech") { @include "plugins/staty/stat_tech.php"; echo"<br>"; } elseif ($dzial=="statgeo") { @include "plugins/staty/stat_geo.php"; echo"<br>"; } elseif ($dzial=="statwizyta") { @include "plugins/staty/stat_wizyta.php"; echo"<br>"; } elseif ($dzial=="wskrocie") { @include "plugins/wskrocie/wskrocie.php"; echo"<br>"; } elseif ($dzial=="sprawy") { @include "sprawy.php"; } elseif ($dzial=="forum") { include "plugins/forum/forum.php"; } elseif ($dzial=="pytanie") { @include "pytanie.php"; } elseif ($dzial=="odpowiedz") { @include "odpowiedz.php"; } elseif ($dzial=="kartki") { @include "plugins/kartki/kartki.php"; } elseif ($dzial=="galeria") { @include "plugins/galeria/galeria.php"; } elseif ($dzial=="chat") { @include "plugins/chat/chat_login.php"; } elseif ($dzial=="kalendarium") { @include "plugins/kalendarz/kalendarium.php"; } elseif ($search) { @include "search.php"; } elseif ($dzial=="subscribe") { @include "subscribe.php"; } elseif ($dzial=="sonda") { include "plugins/sonda/sonda_show.php"; } else { if($opis1){ include "skrut_.php"; } else { include "body_.php"; } } $id=$id_bak; ?> |
|
|
![]()
Post
#8
|
|
![]() Grupa: Zarejestrowani Postów: 709 Pomógł: 176 Dołączył: 24.10.2010 Ostrzeżenie: (0%) ![]() ![]() |
Tak naprawdę to lepiej to zrobić od początku
![]() Ten post edytował d3ut3r 22.07.2011, 21:24:27 -------------------- http://d3ut3r.wordpress.com/ | mysql_* jest przestarzałe UŻYWAJ PDO!
|
|
|
![]()
Post
#9
|
|
Grupa: Zarejestrowani Postów: 5 Pomógł: 0 Dołączył: 21.07.2011 Ostrzeżenie: (0%) ![]() ![]() |
Wreszcie problem rozwiązany!
W kilku plikach php zauważyłem długie zmienne oraz kod php w stylu <? kod php ?>. W związku z tym w konfiguracji PHP włączyłem opcje REGISTER_GLOBALS, SHORT_OPEN_TAG oraz REGISTER_LONG_ARRAYS. Powyższe opcje wprowadziłem do pliku .htaccess i umieściłem go w głównym katalogu strony, przez co ustawienia te działają tylko w obrębie danej strony www. Nie jest to zbyt bezpieczna praktyka, ale z przepisaniem kodu byłby większy problem. Dziękuję wszystkim za pomoc i pozdrawiam |
|
|
![]() ![]() |
![]() |
Aktualny czas: 20.08.2025 - 12:15 |