Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [php5.3.8]Undefined variable / include()
Forum PHP.pl > Forum > PHP
fr33d0m
Tworzyłem spory portal w Krasnalu, który sprawnie śmigał. Przeniosłem się na XAMPPA i wywala mi błędy z którymi nie mogę sobie poradzić. Nie wiem czy wynikają z konfiguracji php.ini, wersji PHP 5.3.8 czy z winy XAMPPA...
Będę wdzięczny za wyjaśnienie i pomoc aby to posklejać w całość:
plik php.ini
  1. register_globals = On
  2. safe_mode = On
  3. ; jesli cos jeszcze potrzbne z php.ini to wstawię


plik cfg.php
  1. $http = 'http://localhost/nnde'; // adres domeny
  2. echo ' |cfg.php = '.$http.' |';


plik ludzie.php
  1. <?php
  2. include('http://'.$_SERVER['SERVER_NAME'].'/nnde/admin/cfg.php'); // config
  3. echo " |ludzie.php = $http |";
  4. $UrlCSS = ''.$http.'/ogloszenia/spolecznosc/css/ludzie.css'; // CSS lokalny
  5. $UrlCSS_sposob2 = '../.../ogloszenia/spolecznosc/css/ludzie.css'; // to działa
  6. include('../.../load/head.php'); // CSS <head> <body>
  7. ?>

Ścieżki:
C:\xampp\htdocs\nnde\admin\cfg.php
C:\xampp\htdocs\nnde\load\head.php
C:\xampp\htdocs\nnde\ogloszenia\spolecznosc\css\ludzie.css
C:\xampp\htdocs\nnde\ogloszenia\spolecznosc\ludzie.php


I oto wynik jaki wyświetla:
[APACHE] pobierz, plaintext
  1. |cfg.php = <a href="http://localhost/nnde" target="_blank">http://localhost/nnde</a> |
  2. Notice: Undefined variable: http in C:\xampp\htdocs\nnde\ogloszenia\spolecznosc\ludzie.php on line 3
  3. |ludzie.php = |
  4. Notice: Undefined variable: http in C:\xampp\htdocs\nnde\ogloszenia\spolecznosc\ludzie.php on line 4
  5.  
  6. Warning: include() [function.include]: Unable to access ../.../load/head.php in C:\xampp\htdocs\nnde\ogloszenia\spolecznosc\ludzie.php on line 6
  7.  
  8. Warning: include(../.../load/head.php) [function.include]: failed to open stream: No such file or directory in C:\xampp\htdocs\nnde\ogloszenia\spolecznosc\ludzie.php on line 6
  9.  
  10. Warning: include() [function.include]: Failed opening '../.../load/head.php' for inclusion (include_path='.;C:\xampp\php\PEAR') in C:\xampp\htdocs\nnde\ogloszenia\spolecznosc\ludzie.php on line 6
[APACHE] pobierz, plaintext


Moje pytanie: dlaczego nie mogę odczytać zmiennej $http w pliku ludzie.php mimo, że includuje plik cfg.php gdzie ta zmienna $http jest zainicjowana? i dlaczego wszystko tak dziwnie się posypało mimo, że w Krasnalu działało?
vee
  1. include('http://'.$_SERVER['SERVER_NAME'].'/nnde/admin/cfg.php'); // config

nie da Ci deklaracji zmiennej $http tylko:
Kod
|cfg.php = <a href="http://localhost/nnde" target="_blank">http://localhost/nnde</a> |


jeśli tylko taka forma pliku wchodzi w grę to musisz zastanowić się nad jakimś parsowaniem ewentualnie.
mortus
Nie chodzi tutaj o formę pliku, a o to, że w include używasz adresu url. Powoduje to, że plik jest najpierw interpretowany przez PHP i to wygenerowana zawartość (efekt działania skryptu cfg.php) jest wstawiana do pliku. Argumentem funkcji include powinna być ścieżka względna lub bezwzględna do pliku cfg.php na serwerze, czyli w Twoim przypadku coś takiego:
  1. include 'admin/cfg.php';
fr33d0m
Dziękuje mortus za szczegółowe wyjaśnienie. Teraz już chyba wszystko działa. smile.gif

  1. include('../../admin/cfg.php'); // config


Ps. dziwne tylko, że Krasnal poprawnie interpretował taką ścieżkę do pliku cfg.php ('../.../admin/cfg.php') - dlatego postanowiłem skorzystać z alternatywnego linka poprzez $_SERVER.

Pozdrawiam
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.