Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> [PHP]DEFINE () nie działa po INCLUDE (), po zmianie apache i na php 5.5
GeeryS
post 22.03.2015, 19:03:25
Post #1





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


Hej,

w uproszonym przykładzie problem wygląda następująco :

plik konfig.php
zawiera:

  1. DEFINE ('TEST','test udany')
  2. echo 'zaladowany konfig';


plik uruchom.php
zawiera :

  1. include ('konfig.php');
  2. echo TEST;

otrzymuję:

zaladowany konfig
TEST

Czyli plik konfig.php jest includowany, wykonane jest ECHO w nim zawarte , ale
wyglada na to, że nie działa DEFINE po includowaniu ( nie ma zdefiniowanej stalej ? )

Dodam, że probelm pojawił się jak zmieniłem wersje apache i php na 5.5 ... wcześniej te pilki działały

gdzie szukać sedna problemu i jego rozwiązania ? ... przeszukałem przez ostatnie dni sieć i raz tylko znalazlem, że ktoś miał też ten problem, ale brak rozwiązania sad.gif

z góry dzięki za sugestie i rady
Go to the top of the page
+Quote Post
Pyton_000
post 22.03.2015, 19:19:51
Post #2





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


define nie DEFINE
Go to the top of the page
+Quote Post
com
post 22.03.2015, 19:26:28
Post #3





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


i brakuje ;
Go to the top of the page
+Quote Post
GeeryS
post 22.03.2015, 19:36:39
Post #4





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


ok, oczywiście macie racje, źle tu zapisałem ... ale nie w tym problem, uwzględniając wasze poprawki , problem istnieje taki jak opisałem.
Macie jakiś pomysł dalej ?
Go to the top of the page
+Quote Post
Damonsson
post 22.03.2015, 19:45:48
Post #5





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Masz włączone wyświetlanie błędów, w tym Notice?

DEFINE czy define czy DeFiNe jeden pies, musi zadziałać.

Ten post edytował Damonsson 22.03.2015, 19:47:51
Go to the top of the page
+Quote Post
GeeryS
post 22.03.2015, 20:02:11
Post #6





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


pokieruj proszę, gdzie i co mam włączyć jesli chodzi o raportowanie błędów i Notice



mam w php.ini :

display_errors : on
error_reporting : 32759


Go to the top of the page
+Quote Post
com
post 22.03.2015, 20:04:25
Post #7





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


  1. ini_set("display_errors", 1);

Ale to ustaw w pliku php

Ten post edytował com 22.03.2015, 20:05:18
Go to the top of the page
+Quote Post
Damonsson
post 22.03.2015, 20:05:43
Post #8





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Czyli masz. A wpisz:

  1. echo TESt;


zamiast

  1. echo TEST;


Dostajesz Notice?
Go to the top of the page
+Quote Post
GeeryS
post 22.03.2015, 20:13:20
Post #9





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


dodam, że jeśli sprawdzam zdefiniowane stałe to jeśli :

1) użyję

print_r(get_defined_constants(true));

w konfig.php ... to w wynikowej tablicy są na końcu zdefiniowane stałe [USER]



2) użyję

print_r(get_defined_constants(true));

po includowaniu konfig.php ...to w wynikowej tablicy nie ma [USER]


a plik konfig jest includowany !

echo TEST;

dostaję : TEST





echo TESt;

dostaję : TESt;



czyli nie dostaję Notice
Go to the top of the page
+Quote Post
Damonsson
post 22.03.2015, 20:17:17
Post #10





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


A powinieneś dostać notice, gdzieś wyłączasz wyświetlanie błędów w kodzie. To jest część jakiegoś większego projektu? Musiałbyś pokazać cały kod, odpowiedzialny za to. Tak to możemy co najwyżej powróżyć gdzie jest błąd, niestety.

Ten post edytował Damonsson 22.03.2015, 20:17:52
Go to the top of the page
+Quote Post
com
post 22.03.2015, 20:18:36
Post #11





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


masz tak:
konfig.php
  1. <?php
  2. DEFINE ('TEST','test udany');
  3. echo 'zaladowany konfig';

i nic wiecej?
uruchom.php

  1. <?php
  2. ini_set("display_errors", 1);
  3. include ('konfig.php');
  4. echo TEST;

?
Go to the top of the page
+Quote Post
GeeryS
post 22.03.2015, 20:33:41
Post #12





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


tak, to większy projekt, ale dalszy kod nie jest w tym momencie ruszany bo problem powstał już na etapie ładowania konfigu ze zdefinioanymi stałymi ścieżek za pomocą define () ;

wiec chyba nie ma co zawracac głowy dalszym kodem

całość działała na php 5.4 ...



przy innych błędach Notice działa ... tylko w tym przypadku efekt jest jako podałem echo wyświetla to co jest za nim. Jak napisze
echo xxxx;

dostaję xxxx

hej com,

powykonaniu Twojego testu dostaję :




zaladowany konfig
Go to the top of the page
+Quote Post
Pyton_000
post 22.03.2015, 20:38:22
Post #13





Grupa: Zarejestrowani
Postów: 8 068
Pomógł: 1414
Dołączył: 26.10.2005

Ostrzeżenie: (0%)
-----


zmień include na require
Go to the top of the page
+Quote Post
GeeryS
post 22.03.2015, 20:39:12
Post #14





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


Hej Damonsson, a jak sądzisz gdzie szukac senda problemu ? ... w konfiguracji php.ini , czy gdzie inndziej ? .. bo raczej w kodzie nie ( chyba az takich zmian w php 5.5 nie było)

Cytat(Pyton_000 @ 22.03.2015, 20:38:22 ) *
zmień include na require



efekt ten sam sad.gif
Go to the top of the page
+Quote Post
Damonsson
post 22.03.2015, 20:46:59
Post #15





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


Z tego co kojarzę php.ini nie ma ustawienia typu "wszystkie odwołania do stałej traktuj jako string". Więc nic tam nie powinno być. Z drugiej strony piszesz, że dostajesz błędy notice w innych miejscach, a jak próbujesz wyechować nieistniejącą stałą, to nie dostajesz notice. Więc gdzieś poziom niżej musiałbyś mieć jakoś obsłużone te stałe.

Jakiś cache? Edytujesz inny plik konfig.php niż wczytujesz? Coś bardzo głupiego w tym stylu bym zakładał.

Chcesz mieć 100% pewności, że to nic w konfiguracji php.ini? Utwórz sobie tylko te 2 pliki poza projektem i ustaw w nich to co Ci podał @com w ostatnim poście. Jeżeli tak zadziała, to znaczy, że masz gdzieś błąd w kodzie. Jeżeli nie zadziała tak, to, to hmmm, w sumie będzie to niemożliwe wg mnie.

Ten post edytował Damonsson 22.03.2015, 20:47:41
Go to the top of the page
+Quote Post
GeeryS
post 22.03.2015, 21:10:54
Post #16





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


ok, jest jakiś postep :

nowe, świeże pliki :


konfig.php

  1. <?php
  2. define ('TEST','test udany');
  3. echo 'zaladowany konfig';
  4. echo xxx;
  5. echo "konfig.php : ".TEST;
  6. ?>



uruchom.php

  1. <?php
  2.  
  3. ini_set("display_errors", 1);
  4. include ('konfig.php');
  5.  
  6.  
  7. echo xxxx;
  8. echo "uruchom.php : ".TEST;
  9. ?>



otrzymuję :

zaladowany konfig
Notice: Use of undefined constant xxx - assumed 'xxx' in /share/CACHEDEV1_DATA/Web/M77i7apps/MegaBAZAksiazki/priv/cng/konfig.php on line 4
xxxkonfig.php : test udany
Notice: Use of undefined constant xxxx - assumed 'xxxx' in /share/CACHEDEV1_DATA/Web/M77i7apps/MegaBAZAksiazki/priv/cng/uruchom.php on line 8
xxxxuruchom.php : test udany


czyli teraz wszystko ok !


ale ... gdy ten sam kod wkleję w pliki projektu ( wycinam do zera kod i wklejem ten powyżej ) ... to problem nadal ... problem, gdzies w kodowaniu zapisanych wcześniej plików ?

czy mam dwa testy z taką sama zawartoscią kodu ... jeden test jest ok -ten na świeżych plikach

a druki test na plikach już istniejących nie działa

Go to the top of the page
+Quote Post
com
post 22.03.2015, 21:14:19
Post #17





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


Nie dawaj ?> bo jak zakładam tam w tym konfig masz sam kod php. Kodowanie UTF8 bez bom masz?
Go to the top of the page
+Quote Post
Damonsson
post 22.03.2015, 21:16:40
Post #18





Grupa: Zarejestrowani
Postów: 2 355
Pomógł: 533
Dołączył: 15.01.2010
Skąd: Bydgoszcz

Ostrzeżenie: (0%)
-----


A te stare jak wczytujesz? Po prostu odpalasz z poziomu przeglądarki wpisując domena..../uruchom.php tak jak te nowe, czy masz tam w projekcie jakiś autoloader, controllery, bootstrapy, które najpierw się odpalają i dopiero później doczytują plik uruchom.php?
Go to the top of the page
+Quote Post
GeeryS
post 22.03.2015, 21:27:19
Post #19





Grupa: Zarejestrowani
Postów: 13
Pomógł: 0
Dołączył: 29.05.2012

Ostrzeżenie: (0%)
-----


wczytuje stare i nowe z przeglądarki ... w ten sam sposob : domena\uruchom.php




wynik świeżych plików :

zaladowany konfig

konfig.php : test udany

uruchom.php : test udany



wynik na starych plikach :

zaladowany konfig

konfig.php : test udany
Notice: Use of undefined constant TEST - assumed 'TEST' in /share/CACHEDEV1_DATA/Web/X/uruchom.php on line 8
uruchom.php : TEST


pominowłem w wynikach Notice wobex niezdefiniowa




dodam, że wcześniej projekt działał na Xampp 1.8.2 na windowsie ... a teraz projekt jest wrzucony w Apache na linuxie. ... może tu gdzies problem w powiazaniu z jakimś kodowaniem, czy czymś podobnym ?

Cytat(com @ 22.03.2015, 21:14:19 ) *
Nie dawaj ?> bo jak zakładam tam w tym konfig masz sam kod php. Kodowanie UTF8 bez bom masz?



co oznacza bez bom ?

Ten post edytował GeeryS 22.03.2015, 21:29:12
Go to the top of the page
+Quote Post
com
post 22.03.2015, 21:30:35
Post #20





Grupa: Zarejestrowani
Postów: 3 034
Pomógł: 366
Dołączył: 24.05.2012

Ostrzeżenie: (0%)
-----


http://www.wikiwand.com/pl/BOM_(informatyka)
http://comstudio.github.io/utf-8-bez-bom-2/
Go to the top of the page
+Quote Post

2 Stron V   1 2 >
Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 14.06.2025 - 20:14