GeeryS
22.03.2015, 19:03:25
Hej,
w uproszonym przykładzie problem wygląda następująco :
plik konfig.php
zawiera:
echo 'zaladowany konfig';
plik uruchom.php
zawiera :
include ('konfig.php');
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

z góry dzięki za sugestie i rady
Pyton_000
22.03.2015, 19:19:51
define nie DEFINE
GeeryS
22.03.2015, 19:36:39
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 ?
Damonsson
22.03.2015, 19:45:48
Masz włączone wyświetlanie błędów, w tym Notice?
DEFINE czy define czy DeFiNe jeden pies, musi zadziałać.
GeeryS
22.03.2015, 20:02:11
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
Damonsson
22.03.2015, 20:05:43
Czyli masz. A wpisz:
zamiast
Dostajesz Notice?
GeeryS
22.03.2015, 20:13:20
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
Damonsson
22.03.2015, 20:17:17
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.
masz tak:
konfig.php
<?php
echo 'zaladowany konfig';
i nic wiecej?
uruchom.php
<?php
include ('konfig.php');
?
GeeryS
22.03.2015, 20:33:41
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
Pyton_000
22.03.2015, 20:38:22
zmień include na require
GeeryS
22.03.2015, 20:39:12
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
Damonsson
22.03.2015, 20:46:59
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.
GeeryS
22.03.2015, 21:10:54
ok, jest jakiś postep :
nowe, świeże pliki :
konfig.php
<?php
echo 'zaladowany konfig'; echo "konfig.php : ".TEST
; ?>
uruchom.php
<?php
include ('konfig.php');
echo "uruchom.php : ".TEST
; ?>
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
Nie dawaj ?> bo jak zakładam tam w tym konfig masz sam kod php. Kodowanie UTF8 bez bom masz?
Damonsson
22.03.2015, 21:16:40
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?
GeeryS
22.03.2015, 21:27:19
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 ?
GeeryS
22.03.2015, 21:47:46
dzięki Qcom ... uzupełnię wiedzę...
z tego co sprawdziłem na szybko to i stare i nowe bez bom ... ale sprawdze sobie pozniej na spokojnie , czy w tym jest miedzy tymi plikami róznica
jeszcze są jakies sugestie gdzie może byc różnica w starych i nowych plikach ?
a tak na koniec dnia to dzięki wszystkim Wam za udział w dyskuji i pomoc ...
Damonsson
22.03.2015, 21:49:37
Wrzuć gdzieś te 2 stare pliki i te 2 nowe i daj tu linka.
GeeryS
22.03.2015, 22:09:05
znalazłem przyczynę była w podaniu ścieżki do konfig.php
include ("http:// -tak było w starych plikach , wtedy w moich testech zdefiniowane stałę nie działają
include ("../ - tak jest w nowych plikach i stałe działają
zmiana w obu plikach sposobu podania ścieżki ... wywołuje juz te same efekty
sorry, że tego nie było widać ściezek w podaych wcześniej przykłądach, bo kompletnie się tego nie spodziewałem, bo w obu przypadakch includował przecież konfig.php ... w obu wykonane było echo
to mnie zmyliło ... byłem pewien ze ściezki w obu przypadkach nie mają znaczenia
a jak to rozumieć ?
GeeryS
22.03.2015, 22:20:45
Cytat(com @ 22.03.2015, 22:12:22 )

kurcze, ale obecnie na linuxie , php.ini pokazuje :
allow_url_fopen On
allow_url_include On
wiec chyba powinno działac include('http://
czy źle myślę ?
Damonsson
22.03.2015, 22:31:20
Przecież include działa poprawnie. Ale skoro zapisujesz sobie coś w RAMie na innym serwerze, to z jakiej racji ma to być widoczne na Twoim?
GeeryS
22.03.2015, 22:41:35
bo to ten sam serwer ... wydawalo mi sie ze jesli odwolanie przez include('http dotyczy tego samego serwera to bedzie widzial stale ... ok. i ta Twoja odpowiedz wyjasnia juz wszytko . jak widac bylem w blednym przekonaniu ... include traktuje takie odwolanie jako odwolanie do innego serwera i nie widzi stalych
dzieki za pomoc.
zamykam sprawe. jakos to zaznaczyc tu na forum ?
Zostawiasz, tu nie zamykamy. Zamykane sa tylko wątki które zamknie moderator
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.