Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP]Po uprgade do 5.6 nic nie działa
Forum PHP.pl > Forum > PHP
Mieeetek
Ma stronę na VPS gdzie do tej pory był PHP 5.2. Hosting wykonał upgrade do wersji 5.6 (z opcją 7). Efekt jest takie że nie działają żadne strony z z rozszerzeniem .php
Nawet strona

  1. <?php
  2. echo "aaaa test";
  3. ?>


pokazuje pusty wynik
na podglądzie widać cały kod.
To samo po wyczyszczeniu całego pliku .htaccess

Ktoś ma jakiś pomysł co mogę zrobić?
kapslokk
Cytat
Ktoś ma jakiś pomysł co mogę zrobić?

Może błędy wyświetl? Chociaż jeśli ten kod, który zamieściłeś nie działa, to raczej problemu szukał bym gdzie indziej - konfiguracja apache.

Mieeetek
raport błędów też daje pustą białą stronę
jeśli mam hosting - to muszę raczej męczyć admina o konfigurację Apache - prawda ?
kapslokk
No ja nie wiem co Ty masz w końcu. W pierwszym poscie piszesz, ze masz VPS, a teraz ze hosting. Ale skoro zmienila Ci sie wersja PHP bez Twojej ingerencji, to pewnie masz hosting na serwerze wspoldzielonym. Zanim zagadasz do adminow sprobuj jeszcze usunac .htaccess calkowicie, upewnic sie, ze masz domene podpieta pod odpowiedni katalog i po tym wszystkim sprobuj odpalic plik php z zawartoscia:
  1. <?php
  2. echo("Dzialam");
Tomplus
prawdopodobnie masz wyłączone raportowanie błędów.

spróbuj wymusić raportowanie np dając na początku strony:

  1. error_reporting (E_ALL ^ E_NOTICE);

albo sprawdzić w opcjach, może są wyciszone.


Np. na Linuxinfo ma w trybie administratora konta opcje ustawień serwera (i PHP) dla danej domeny, a inne hostingi wyłączają domyślnie raporty na stronie i należy włączyć w panelu lub czytać logi.
viking
Być może masz dodaną AddHandler x-mapp-php5.2 .php albo coś podobnego.
emstawicki
Cytat(Mieeetek)
Ma stronę na VPS

Cytat(Mieeetek)
jeśli mam hosting


Zdecyduj się co w końcu masz smile.gif
Hosting współdzielony? VPS zarządzany przez administratora? VPS z dostępem root?

Jeżeli to administrator (nie Ty) hostingu / VPS dokonał zmiany wersji PHP to w jego interesie jest rozwiązanie problemu smile.gif
Chyba, że masz panel zarządzania, w którym możesz wybrać wersję PHP (może jest nie wybrana, albo wyłączona obsługa php?)
Mieeetek
"Przyczyną był błędnie wygenerowany plik konfiguracyjny httpd.conf który odtwarzał się z niepoprawnego szablonu dla nowej wersji PHP." (odpowiedź z administracji)

Serwis działa - choć nie w całości. Działa np. Forum phpbb, ale nie działają silniki wyszukiwania które sam robiłem (i działały pod PHP5.2 - teraz jest php5.6.28)

W tych problematycznych stronach operujących na bazach dokonałem zmian, zamieniłem wszystkie msql na msqli. Połączenie z bazami jest (np. wylicza mi ilość rekordów) to nie działa przesyłanie zmiennych i operacja na bazie.
Raportowanie błędów pokazuje taki komunikat

mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given

mój kod to:
  1. $word="";
  2. if($word)
  3. {
  4. $getWord=mysqli_query($db, "SELECT word,definition FROM mdglossary WHERE word LIKE '$word' ORDER BY word");
  5. }
  6. if($getWordArray=mysqli_fetch_array($getWord))
  7. {
  8. do
  9. {
  10. echo "xxxxx";
  11. }
  12. while($getWordArray=mysqli_fetch_array($getWord));
  13. }



nospor
Cytat
mysqli_fetch_array() expects parameter 1 to be mysqli_result, string given
Komunikat bledu mowi wszystko. Przeczytal wacpan go?
Mieeetek
tak, uczyli mnie w szkole czytania, ale dalej nie wiem co mam zrobić aby to działało - przecież jest $getWord
nospor
Czy tak ciezko wyswietlic co to zawiera?


var_dump($getWord);
if($getWordArray=mysqli_fetch_array($getWord))

Taki problem? Myslisz ze php wyswietla sobie ot tak losowo bledy? Skoro mowi ze cos jest tekstem a powinno byc czyms innym, znaczy ze tak jest, wiec wyswietl sobie co to dokladnie zawiera.

Tudziez tu:


var_dump($getWord);
while($getWordArray=mysqli_fetch_array($getWord));

Bo nie sprawdziles ktorej linii dotyczy blad...

ps:
Cytat
przecież jest $getWord
TYko ze to jest w warunku a warunek jak sama nazwa wskazuje raz sie wykona a raz nie - zaleznie czy warunek spelniony czy nie. A twoj kod co tu pokazales to na chwile obecna nie spelnia tego warunku i $getWord nie jest inicjalizowane w IF
Mieeetek
niektórym ciężko, dlatego pytają innych

string(0) ""

(linia jest raportowana do tego pierwszego - w przykładzie linia 6 ale wypisałem pozostałą część kodu)

taki jest rezultat - i dalej nie wiem o co chodzi. Pierwsza wartość jest pusta czy jak?
viking
mysqli_query powinno zwrócić obiekt mysqli_result albo boolean. Jakim cudem ty masz ""? Sprawdź jeszcze co dzieje się wcześniej np czy połączenie z bazą w ogóle jest nawiązane.
Tomplus
Odpowiedź prosta, wysyłasz zapytanie który nie zawiera żadnej treści.

Sprawdź co się stało że zapytanie nie zostaje zapisane w zmiennej $getWord;
Mieeetek
Wygląda na to że tak - bo wcześniej np. poprawnie jest wyliczana ilość rekordów

Poza tym
  1. $db = mysqli_connect("$host", "$username", "$password") or die ("could not connect to mysql");
  2. mysqli_select_db($db, "$databasename") or die ("no database");


nie pisze że coś jest nie tak

i jeszcze zgodnie z poradą wstawiłem

  1. function mysqli_result($db,$row=0,$col=0){
  2. $numrows = mysqli_num_rows($db);
  3. if ($numrows && $row <= ($numrows-1) && $row >=0){
  4. mysqli_data_seek($db,$row);
  5. $resrow = (is_numeric($col)) ? mysqli_fetch_row($db) : mysqli_fetch_assoc($db);
  6. if (isset($resrow[$col])){
  7. return $resrow[$col];
  8. }
  9. }
  10. return false;
  11. }


więcej grzechów nie pamiętam

UZUEPEŁNIENIE:
var_dump($_GET);
daje
array(1) { ["word"]=> string(5) "xxxxxx" }
(w adresie jest aaaaaaaaa.php?word=xxxxxx

Co może być przyczyną tego że zapytanie nie zostaje zapisane w zmiennej $getWord; ?

Sorry ale ja naprawdę nie mam pojęcia jak sprawdzić co się stało że zapytanie nie zostaje zapisane w zmiennej $getWord i nie mam pomysłu dlaczego tak się dzieje.
Tomplus
Sprawdźmy kod jeszcze raz....

  1. $word=""; //deklarujesz zmienną $word, tak?
  2. if($word) { // teraz sprawdzasz czy ma zawartość? zastosuj dla pewności isset($word) lub !empty($word)
  3. $getWord=mysqli_query($db, "SELECT word,definition FROM mdglossary WHERE word LIKE '$word' ORDER BY word");
  4. //proponuje zrobić sobie:
  5. echo "SELECT word,definition FROM mdglossary WHERE word LIKE '$word' ORDER BY word";
  6. //a następnie takie zapytanie wkleić do bazy danych, o ile błędów nie będzie wcześniej widać np. błędna wartość $word.
  7. }


i jeszcze

  1. function mysqli_result($db,$row=0,$col=0)


Totalnie nie rozumiem tej funkcji, po kiego wkładasz do funkcji zasób $db i dwa argumenty liczbowe? Moze dlatego Ci nie działa, bo korzystając z takiej funkcji nie wysyłasz zapytania, tylko informację o połączeniu.
Mieeetek
Cytat(Tomplus @ 18.11.2016, 22:17:53 ) *
  1. function mysqli_result($db,$row=0,$col=0)


Totalnie nie rozumiem tej funkcji, po kiego wkładasz do funkcji zasób $db i dwa argumenty liczbowe? Moze dlatego Ci nie działa, bo korzystając z takiej funkcji nie wysyłasz zapytania, tylko informację o połączeniu.


Dla mnie to jest magia, nie rozumiem tej funkcji, ale działa. Jeśli usuwam $db to pojawia się kilka błędów i nie działają niektóre wyszukiwania w bazie.

Obecnie udało mi się usunąć wszystkie błędy z wyświetlania
Problem był w if($getWordArray=mysqli_fetch_array($getWord))

Najpierw zrobiłem
$ile="";
.... (cod)
$ile=mysqli_num_rows(getWord);

a potem if($ile>0)
i dopiero wtedy
$getWordArray=mysqli_fetch_assoc($getWord);

To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.