Skocz do zawartości

Nietypowy problem z deklaracją zmiennych globalnych


General_Depet

Rekomendowane odpowiedzi

Na jednym z serwerów (prawdopodobnie dedyk) miałem dzisiaj nietypowy problem. Kto mi powie dlaczego po takiej deklaracji zmiennych:

$GLOBALS = array(
'url'	=>   '**************',
'dbhost'	 =>   'localhost',
'dbuser'	 =>   '*****_seokat',
'dbpass'	 =>   '*******',
'dbname'	 =>   '*****_seokat',
'prefix'	 =>   'seokat_',
'pass'	   =>   '***********************'
);

(oczywiście gdzie * to konkretne dane)

wywołanie zmiennej poleceniem np: $GLOBALS['url'] NIE zwraca wartości ale już deklaracja zmiennych w postaci:

$GLOBALS['url'] = '***********';
$GLOBALS['dbhost'] = 'localhost';
$GLOBALS['dbuser'] = '*****_seokat';
$GLOBALS['dbpass'] = '******';
$GLOBALS['dbname'] = '******_seokat';
$GLOBALS['prefix'] = 'seokat_',
$GLOBALS['pass'] = '********************';

wartość $GLOBALS['url'] zwraca. O co chodzi bo zgłupiałem trochę ?

iDir - skrypt na katalog stron lub firm - następca projektu SEOKatalog, dostosowany do dzisiejszych standardów, w pełni responsywny, na nowoczesnym frameworku.

Odnośnik do komentarza
Udostępnij na innych stronach

: $GLOBALS[url'] < tak napisałeś na forum czy w skrypcie ???

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

: $GLOBALS[url'] < tak napisałeś na forum czy w skrypcie ???

Na forum - już poprawiłem :jezyk1:

żeby było śmieszniej - dalej w skrypcie generowane są do $GLOBALS niektóre ustawienia konfiguracyjne sposobem pierwszym czyli array() ale już do podtablicy czyli $GLOBALS['cfg'] = array('pierwsza_zmienna' => 'bla bla', ...); i kurna tutaj wywołanie działa...

Błąd jest ewidentnie gdzieś w ustawieniach tego serwera tylko co to może być ?

iDir - skrypt na katalog stron lub firm - następca projektu SEOKatalog, dostosowany do dzisiejszych standardów, w pełni responsywny, na nowoczesnym frameworku.

Odnośnik do komentarza
Udostępnij na innych stronach

Wydrukuj zawartość tablicy funkcją print_r($GLOBALS); Bo u mnie działa wiec faktycznie jakieś masz jakieś czary mary :jezyk1:

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Wydrukuj zawartość tablicy funkcją print_r($GLOBALS);

Oczywiście sprawdzałem to :jezyk1:. Patrz:

Kod:

<? echo 'Pokaz kurna tego globala: '.$GLOBALS['url']; ?>
<? print_r($GLOBALS); ?>

Wynik:

Pokaz kurna tego globala: Array
(
[url_dir] => /home/seokat/domains/*********.com.pl/public_html/
[url] => www.*********.com.pl
[dbhost] => localhost
[dbuser] => *******_seokat
[dbpass] => *******
[dbname] => ******_seokat
[prefix] => seokat_
[pass] => *******************
[cfg] => Array
	(
		[language] => polish
		[title] => SEOKatalog - nowoczesny katalog stron www
....

Normalne jaja...

iDir - skrypt na katalog stron lub firm - następca projektu SEOKatalog, dostosowany do dzisiejszych standardów, w pełni responsywny, na nowoczesnym frameworku.

Odnośnik do komentarza
Udostępnij na innych stronach

Ja bym proponował zapisanie kodu w pliku TXT i podanie do publicznej wiadomości.

Może w kodzie masz babol-a , ale bez zobaczenia kodu to trudno powiedzieć co tam masz

Ale ten kod działa w identycznej postaci na kilkudziesięciu innych serwerach i zmienne globalne są właśnie deklarowane w postaci array(); tylko na tym jednym serwerze skrypt ich po prostu "nie widzi" a w zasadzie nie widział bo jak zmieniłem formę deklaracji zmiennych tablicowych na te indywidualne to śmiga aż miło popatrzeć. Magia.

iDir - skrypt na katalog stron lub firm - następca projektu SEOKatalog, dostosowany do dzisiejszych standardów, w pełni responsywny, na nowoczesnym frameworku.

Odnośnik do komentarza
Udostępnij na innych stronach

$GLOBALS zawiera wszystkie zmienne globalne, także samą siebie - i tutaj jest problem.

Jak robisz $GLOBALS = array('cokolwiek' => 5); to usuwasz całą zawartość, w tym $GLOBALS['GLOBALS'] czyli całe $GLOBALS razem z $GLOBALS['cokolwiek'].

Taki kod zadziała:

$GLOBALS = array_merge($GLOBALS, array(
'url'	=>   '**************',
'dbhost'	 =>   'localhost',
'dbuser'	 =>   '*****_seokat',
'dbpass'	 =>   '*******',
'dbname'	 =>   '*****_seokat',
'prefix'	 =>   'seokat_',
'pass'	   =>   '***********************'
));

Odnośnik do komentarza
Udostępnij na innych stronach

@optymalizator -> Bzdury piszesz :)

Zdefiniowana przez autora w ten sposób tablica jest jak najbardziej prawidłowa, ale dlaczego u niego nie działa stanowi zagadkę.

@General_Depet -> testowo zdefiniuj w taki sam sposób tablicę, ale pod inną nazwą zmiennej w innym pliku i zobacz czy działa.

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

W takim razie pokaż w manualu aktualnej wersji php informacje, że zmienna $GLOBALS jest zarezerwowana;

I wyjaśnij dlaczego tak może tą tablicę zdefiniować:

$GLOBALS['url'] = '***********';

$GLOBALS['dbhost'] = 'localhost

HTTP 200 usługi IT -> Dariusz Janicki | Realizacja serwisów www oraz oprogramowania w PHP / C# / Golang / Node.js / MySQL/ Laravel
Komory normobaryczne - normobaria.tech Wykonawca montażu i instalacji komory normobarii

Odnośnik do komentarza
Udostępnij na innych stronach

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

  • Ostatnio przeglądający   0 użytkowników

    • Brak zarejestrowanych użytkowników przeglądających tę stronę.
×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Umieściliśmy na Twoim urządzeniu pliki cookie, aby pomóc Ci usprawnić przeglądanie strony. Możesz dostosować ustawienia plików cookie, w przeciwnym wypadku zakładamy, że wyrażasz na to zgodę. Warunki użytkowania Polityka prywatności