Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [PHP] Problem z nieprzypisanymi zmiennymi
Forum PHP.pl > Forum > Przedszkole
mk83
Mam skrypt napisany jeszcze w php4. Po przeniesieniu go na nowy serwer z php5 wywala mi błąd 500. Problem polega na tym, że w skrypcie mam np:
  1. <?php
  2. echo "$zmienna";
  3. ?>

i zmienna ta nie jest wcześniej nigdzie przypisana. Jeśli coś pod tą zmienną podstawię:
  1. <?php
  2. $zmienna = '';
  3. echo "$zmienna";
  4. ?>

to nie ma problemu.

Czy da się gdzieś w php.ini ustawić tak, aby można było używać zmiennych bez ich wczesniejszczego przypisania ?
lukaszgolder
Według mnie nie można wywoływac nieprzypisane zmienne np:
  1. <?php
  2. echo $var;
  3. ?>

Powinno działac, jesteś pewien, że problem nie leży gdzieś indziej?
Mize
Eee, a co w takim wypadku miałaby wyświetlić instrukcja echo ?
l0ud
Taki kod wygeneruje co najwyżej notice, a na pewno nie błąd 500. No chyba, że konfiguracja serwera jest na swój sposób spaprana...

Czy na pewno w tym tkwi problem?
mk83
Cytat(l0ud @ 13.11.2008, 16:21:26 ) *
Taki kod wygeneruje co najwyżej notice, a na pewno nie błąd 500. No chyba, że konfiguracja serwera jest na swój sposób spaprana...

Czy na pewno w tym tkwi problem?


Tak jak mówisz, bład 500 wynika zapewne z ustawiń serwera, ale problem raczej napewno tkwi własnie w braku wczesniejszego przypisania zmiennej. Stworzyłem plik zawierający tylko kod podany w przykładzie u góry i skrypt się nawet nie odpalił tylko wywalił ten bład 500, zmieniłem go przypisując wczesniej do zmiennej pusty ciąg i skrypt działa.


Porównując ustawienia php.ini z php4, udało mi się wyeliminować problem z nieprzypisanymi zmiennymi ustawiając za pomocą ini_set() wartość error_reporting na 2039 (była 6143). Nie mam co prawda pojęcia co to oznacza ale zadziałało.
Niestety skrypt który przenosze jest oczywiście duzo bardziej skomplikowany i w dalszym ciągu serwer wywala błąd 500, zamiast jakiego klowiek błędu php. Dalej zapewne jest coś nie tak z konfiguracją php lub samego serwera (ISS).
Może ktoś mi poradzić jak ustawić wyświetlanie błędów php zamiast tego błędu 500 ? Ustawiłem też zmienną display_errors na On, również za pomocą php_set() (mam bardzo utrudniony dostep do serwera).
Poniżej ustawienia zmiennych z phpinfo():

  1. <?php
  2. allow_call_time_pass_reference Off Off
  3. allow_url_fopen On On
  4. allow_url_include Off Off
  5. always_populate_raw_post_data Off Off
  6. arg_separator.input & &
  7. arg_separator.output & &
  8. asp_tags Off Off
  9. auto_append_file no value no value
  10. auto_globals_jit On On
  11. auto_prepend_file no value no value
  12. browscap no value no value
  13. default_charset no value no value
  14. default_mimetype text/html text/html
  15. define_syslog_variables Off Off
  16. disable_classes no value no value
  17. disable_functions no value no value
  18. display_errors On On
  19. display_startup_errors Off Off
  20. doc_root no value no value
  21. docref_ext no value no value
  22. docref_root no value no value
  23. enable_dl On On
  24. error_append_string no value no value
  25. error_log no value no value
  26. error_prepend_string no value no value
  27. error_reporting 6143 6143
  28. expose_php On On
  29. extension_dir d:phpext d:phpext
  30. file_uploads On On
  31. highlight.bg #FFFFFF #FFFFFF
  32. highlight.comment #FF8000 #FF8000
  33. highlight.default #0000BB #0000BB
  34. highlight.html #000000 #000000
  35. highlight.keyword #007700 #007700
  36. highlight.string #DD0000 #DD0000
  37. html_errors On On
  38. ignore_repeated_errors Off Off
  39. ignore_repeated_source Off Off
  40. implicit_flush Off Off
  41. include_path .;C:php5pear .;C:php5pear
  42. log_errors On On
  43. log_errors_max_len 1024 1024
  44. magic_quotes_gpc Off Off
  45. magic_quotes_sybase Off Off
  46. mail.force_extra_parameters no value no value
  47. max_execution_time 30 30
  48. max_input_nesting_level 64 64
  49. max_input_time 60 60
  50. memory_limit 128M 128M
  51. open_basedir no value no value
  52. output_buffering 4096 4096
  53. output_handler no value no value
  54. post_max_size 8M 8M
  55. precision 14 14
  56. realpath_cache_size 16K 16K
  57. realpath_cache_ttl 120 120
  58. register_argc_argv Off Off
  59. register_globals Off Off
  60. register_long_arrays Off Off
  61. report_memleaks On On
  62. report_zend_debug On On
  63. safe_mode Off Off
  64. safe_mode_exec_dir no value no value
  65. safe_mode_gid Off Off
  66. safe_mode_include_dir no value no value
  67. sendmail_from no value no value
  68. sendmail_path no value no value
  69. serialize_precision 100 100
  70. short_open_tag On On
  71. smtp_port 25 25
  72. sql.safe_mode Off Off
  73. track_errors Off Off
  74. unserialize_callback_func no value no value
  75. upload_max_filesize 2M 2M
  76. upload_tmp_dir no value no value
  77. user_dir no value no value
  78. variables_order GPCS GPCS
  79. xmlrpc_error_number 0 0
  80. xmlrpc_errors Off Off
  81. y2k_compliance On On
  82. zend.ze1_compatibility_mode Off Off
  83. ?>



A może problem znajduje się po stronie ISS a nie samego PHP ?
JoShiMa
A ta zmienna, która nie chce się wyświetlić nie pochodzi przypadkiem z POST czy GET?
mk83
Nie, ale jak napisałem wyżej ten akurat problem jest "rozwiązany" (albo jak to słusznie napisał mike chwilowo schowany) . Chodzi teraz o to żeby skrypt się odpalał, pokazał jakieś błędy php, a nie błąd 500.

Ogólnie dochodze do wniosku że to raczej nie z ustawiniami PHP jest problem a raczej z samą konfiguracją serwera ISS.
mike
Cytat(mk83 @ 14.11.2008, 10:18:26 ) *
(...) udało mi się wyeliminować problem z nieprzypisanymi zmiennymi ustawiając za pomocą ini_set() wartość error_reporting na 2039 (była 6143). Nie mam co prawda pojęcia co to oznacza ale zadziałało.
Zamiotłeś problem pod dywan a nie go rozwiązałeś. To, że komunikat o błędzie nie jest pokazywany to nie oznacza, że błędu nie ma.

Taki styl kodowania, sprawia, że skrypty działają wolniej i są pełne błędów.
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.