andkazm
5.03.2013, 09:52:32
Witam ,
NA komputerze z os xp 1.5 GB RAm, wgrałem wampa aby dla celów testowych uruchamiać lokalnie serwis www .
I to pojawiły sie problemy :
1. htaccess przystosowany do ssl - usunąłem te pliki i komunikt o błedach kompesji nieobsługiwanej
przez przeglądarkę przestał się pojawiać
2. teraz jednak mam problem :
Warning: mysql_query() expects parameter 2 to be resource, null given in....
i dalej podana jest treść zapytania które nie może zostać wykonane
( i tym samym dynamiczne skonfigurowanie strony nie udaje sie)
0 -
select configuration_key as cfgKey, configuration_value as cfgValue from configuration
Serwis oparty jest na silniku oscommerce , na serwerze produkcyjnym działa ok
Jak można poradzic sobie z tym problemem ?
Andrzej
nospor
5.03.2013, 09:54:35
A jaki to ma związek z przeglądarka? No żaden. Przenosze.
Co do błędu nr dwa to masz błąd bazy. Postawiłeś w ogóle bazę?
andkazm
5.03.2013, 11:30:09
Baza jest skoro cytuję komunikat , który dostaję od mysql
A poza tym masz rację co do zmiany miejsca w którym powinien znaleźć się post , jednak skoro masz taką moc sprawczą to może by wątek przenieść do "bazy danych - mysql"
nospor
5.03.2013, 11:31:52
Cytat
Baza jest skoro cytuję komunikat , który dostaję od mysql
No właśnie nie.... jeśli nie masz bazy zainstalowanej, to właśnie pojawi się taki komunikat. Instalowałeś bazę tego sklepu czy nie? Instalowałeś w ogóle silnik mysql u siebie na kompie? Dwa proste pytania na które możliwa jest tylko jedna prosta odpowiedź: tak lub nie
andkazm
5.03.2013, 11:38:25
TAK
nospor
5.03.2013, 11:43:06
Na obydwa pytania odpowiedź TAK?
To znajdź teraz kod, w którym łączysz się z bazą: coś ala mysql_connect oraz mysql_selectdb(). I za tym kodem daj:
die('BLAD:'.mysql_error());
andkazm
5.03.2013, 11:50:23
Bazę założyłem z backupu . Z tym też był niemały problem , bo najpierw chciałem zrobić restore z aktualnego backupu . W php ini zmieniałem ustawienia dot. wielkości obsługiwanego pliku :
post_max_size = 60M ,
max_input_time: -1 ,
max_execution_time = 0 nie mniej ciągle miałem komunikat , że limit czasu się skończył .
W końcu rozpakowałem mały plik sql ze strukturą wyjściową .
Z bazą się łączę , to działa . Problem jest właśnie j / w .
nospor
5.03.2013, 11:53:58
A skad wiesz że łączysz się z bazą? Bo widać ewidentnie że twoj skrypt, ma z tym problem. Zastosuj się więc proszę do mojej prośby i zrób ten prosty banalny test. Już pokazałeś, że słabo się orientujesz twierdząc, że ten komunikat
"Warning: mysql_query() expects parameter 2 to be resource, null given in...."
jest komunikatem bazy,
wiec proszę nie wyciągaj innych pochopnych wniosków....
Błąd jaki masz moze wynikać z dwóch rzeczy:
1) Problem połączenia z bazą - to pokaze test o który poraz kolejny proszę.
2) Problem z przekazywanie zmiennej z połączeniem
Narazie skupmy się na pierwszym. Rozumiesz?
edit: a zresztą można od razu zając sie drugim:
w linii co leci komunikat jest taki kod:
mysql_query('zapytanie', $zmienna);
zamien go na :
mysql_query('zapytanie');
bo z komunikatu wynika, że $zmienna jest null. Może chodziaż chwyci aktualne połączenie jeśli jest
andkazm
5.03.2013, 12:12:22
Masz rację o tyle , że sama treść zapytania które nie wyszło , zwrócona przez serwer w komunikacie o
błędzie o niczym nie świadczy i to było z mojej strony głupie . Nie mniej opieram się na skrypcie , który na początku testuje czy jest połączenie z bazą więc tutaj nie ma wątpliwości .
ALe jednak wykonałem test - zmieniłem w pliku configure.php hasło do bazy danych i
mam zaraz komunikat :
Warning: mysql_connect() [function.mysql-connect]: Access denied for user 'andrzej'@'localhost' (using password: YES) in C:\wamp\www\projektcik1\includes\functions\database.php on line 17
wracam do hasła właściwego ustalonego poprzez phpadmina i komunikatu nie ma jest ten jak do tej pory
Warning: mysql_query() expects parameter 2 to be resource, null given in C:\wamp\www\projekcik1\includes\functions\database.php on line 42
nospor
5.03.2013, 12:13:36
No i super

Czyli teraz przechodzimy do punktu nr2: spójrz na mój edit z poprzedniego posta
andkazm
5.03.2013, 12:31:21
ok , wykonam ten Twój test także , moment
sprawa się komplikuje , zapytanie obsługuje następująca funkcja :
function tep_db_query($query, $link = 'db_link') {
if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS
== 'true')) { error_log('QUERY ' . $query . "\n", 3
, STORE_PAGE_PARSE_TIME_LOG
); }
if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS
== 'true')) { error_log('RESULT ' . $result . ' ' . $result_error . "\n", 3
, STORE_PAGE_PARSE_TIME_LOG
); }
$_start = explode(' ', $query_start); $_time = number_format(($_end[1
] + $_end[0
] - ($_start[1
] + $_start[0
])), 6
);
$debug['QUERIES'][] = $query;
$debug['TIME'][] = $_time;
$debug['QUERY_TIME'] += $_time;
return $result;
}
nospor
5.03.2013, 12:37:33
nie: $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());
a: $result = mysql_query($query) or tep_db_error($query, mysql_errno(), mysql_error());
Tak nie działa? Aż tyle połączeń robi twój serwis że musisz podawać konkretnie o które chodzi?
edit: zas głównym problemem może byc to, że przy mysql_connect nie podajesz włąsciwej zmiennej.
Pokaz jeszcze kod z mysql_connect()
andkazm
5.03.2013, 13:16:12
ten fragment kodu wygląda tak :
// include the database functions
require(DIR_WS_FUNCTIONS . 'database.php');
// make a connection to the database... now
tep_db_connect
() or
die('Nie mozna polaczyc sie z baza danych!');
// set the application parameters
$configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
while ($configuration = tep_db_fetch_array($configuration_query)) {
define($configuration['cfgKey'], $configuration['cfgValue']); }
i nie wykonuje się to po // set the application parameters
nospor
5.03.2013, 13:24:51
Po pierwsze: poprawiłeś kod jak prosiłem? Wywaliłes z mysql_query te $$link??
Po drugie: prosiłem o kod z mysql_connect, czyli zapewne o tresc funkcji tep_db_connect() a nie jej wywołanie.
andkazm
5.03.2013, 13:41:48
dodam jeszcze :
- to wszysto działa bezbłędnie na serwerze produkcyjnym ( usunąłem tylko pliki .htaccess o czym pisałem na początku )
- kiedyś tą stronke uruchamiałem lokalnie na laptopie ( lepsze parametry sprzętu ) z vistą i działało wsio
więc teraz nie rozumiem czy system operacyjny ma znaczenie tutaj ?
wedle życzenia :
function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
if (USE_PCONNECT == 'true') {
} else {
}
## tep_db_query("SET NAMES latin2");
return $$link;
}
function tep_db_close($link = 'db_link') {
}
nospor
5.03.2013, 13:49:41
Zrob zmiane co ci pisalem:
nie: $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());
a: $result = mysql_query($query) or tep_db_error($query, mysql_errno(), mysql_error());
a ci zadziała. A jak nie chcesz tego zmieniać to niech ktoś inny się zastanawia czemu te globale nie działają.
ewentulanie do funkcji dopisz global $$link
function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
global $$link;
//a tu dalej jak było
andkazm
5.03.2013, 13:53:23
w postaci
idzie cała lista błędów
Warning: mysql_real_escape_string() expects parameter 2 to be resource, null given in C:\wamp\www\projekcik1includes\functions\database.php on line 137
idalej
Deprecated: Function eregi() is deprecated in C:\wamp\www\projekcik1\includes\classes\language.php on line 87
Myślę że muszę to całe środowisko spowrtem zbudować na lapku . Troszke to już za dużo czasu mi zajmuje a w gruncie rzeczy chodzi tylko
o możliwośc sprawdzania jak działa np. slaider , jakiś banner przed wgraniem "na dobre" , bez ingerowania w wygląd strony w wersji produkcyjnej
nospor
5.03.2013, 13:55:36
widzisz, po wywaleniu tego co ci kazałem, zaczęło ci działać. Niestety w innych cześciach systemu masz ten sam myk, np przy funkcji mysql_real_escape_string() . Jakbyś tam też wywalił te $$link to i tu błędy by zniknęły.
zas eregi nie ma związku z bazą. php informuje cie, że jest to przestarzała funkcja.
andkazm
5.03.2013, 13:56:33
ale tak troche podsumowując . skąd te różnice w działaniu strony w środowisku tetowym i produkcyjnym , konkretnie
na serwerze "w świecie" to działa bez zarzutu więc zaskoczyło mnie że to co miało zająć niwiele czasu absorbuje mnie już od kilko dni
nospor
5.03.2013, 13:58:11
A dopisałeś te global jak cię prosiłem? Z jakiegos powodu zmienna $$link nie jest widoczna poza funkcją. Jednym z powodów teoretycznie jest brak globala
andkazm
5.03.2013, 14:13:15
Dzięki za pomoc ( niestety nie ma sensu zmieniać tego kodu wg wskazówek jakie podałeś ( przechodzić przez cały projekt) ) ,
ale mógłbyś to jakoś wyjaśni ? : skąd te błędy na lokalnym serwerze ?
nospor
5.03.2013, 14:14:18
Ostatnią zmianę o jaką cię prosiłem to jedne GLOBAL $$link w jednej funkcji. Nigdzie więcej.
andkazm
5.03.2013, 14:23:47
Dałem tego globala bezczelnie w pliku index.php ( wróciłem też do pierwotnej wersji database.php)
i mam teraz komunikat :
Otwierana strona nie może zostać wyświetlona, ponieważ używa nieprawidłowych lub nieobsługiwanych metod kompresji.
i mam spowrotem jak w p. 1 , to ciekawostka następna .....
nospor
5.03.2013, 14:24:26
Nie miałeś dawać w żadnym index.php. Napisałem ci wyraźnie gdzie masz go dać...
andkazm
5.03.2013, 14:38:57
wprowadziłem zmianę w kodzie o którą prosiłeś :
function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
// dalej jak było
if (USE_PCONNECT == 'true') {
} else {
}
## tep_db_query("SET NAMES latin2");
return $$link;
}
i rezultat dobr : strona zaczęła się wyświetlać ale z błędem ale jest postęp
arning: chdir() [function.chdir]: No such file or directory (errno 2) in C:\wamp\www\projekcik1\includes\classes\oscthumb.php on line 271
mam też komunikat :
Ostrzeżenie: Istnieje możliwość zapisu pliku konfiguracyjnego w lokalizacji: C:/wamp/www/projekcik1/includes/configure.php. Istnieje ryzyko zagrożenia pracy systemu - zmień uprawnienia dla tego pliku.
zmieniam więc atrybuty katalogu a ten wraca uparciedo read only
nospor
5.03.2013, 14:40:09
No popatrz, tyle próśb o ten jeden global i jednak zadziałało....

Dobra, niech ktoś inny zajmuje się resztą błędów, bo ja już nie mam sił prosić po 5 razy o to samo
andkazm
5.03.2013, 14:41:12
w zasadzie wszystko się wyświetla tylko totalnie rozjeżdża bo jest tabelka z błędami wynikającymi z :
Warning: chdir() [function.chdir]: No such file or directory (errno 2) in C:\wamp\www\cebulki\includes\classes\oscthumb.php on line 271
Call Stack
nie mniej rewelacja ( szacun)
no to z tego Warning-a można wszytko wyczytać, nie znajaduje Ci katalogu do którego odwołuje sie chdir() w pliku oscthumb.php w lini 271 wiec otwóz plik sprawdz co to za scieżka i bedziesz wszytko wiedział czemu się sypie, a pytałeś czemu na serwerze produkcyjnym działą a tu nie, to zapewne wina konfiguracji serwera, tam jest inna tu jest inna
andkazm
5.03.2013, 15:47:20
to katalog "cache" tylko nie daje sobie zmienić atrybutów ( oczywiście jest to kopia katologu z hosta) , trzyma uparce read only , system , hidden więc może dlatego tak się dzieje
coś z moim kompem nie tak ...?
to stwórz ten katalog ręcznie bez kopi z serwera, bo jak zakladam on jest tak czy tak pustu, a pewnie dane są tam zapisywane podczas generowania strony (smarty itd )

a jak nie to przekopuj jego zawartość, bo czasem uprawnienia z serwera sie gryzą z windowsem
andkazm
5.03.2013, 16:21:19
w linii 271 oscthumb.php mam
function _clean_cache() {
// Clean up the cache.
if (chdir($this->cache_dir)) { foreach (glob("*.*") as $filename) { }
}
}
}
a wyżej zdefiniowana jest funkcja :
function oscthumb() {
$this->cache_dir = DIR_FS_CATALOG.'phpThumb/cache';
// For now we can change the cache folder only from here.
$this->enabled = CFG_MASTER_SWITCH=="On"? true : false;
}
zmieniałem atrybuty , zakładałem nowy katalog a ta wredota
obstaje przy swoim
ale dokładnie w tej lini jest która linijka bo chdir() wywołane jest dwa razy raz dla katalogu cache a raz dla DIR_FS_CATALOG który narazie nie wiem co przechowuje

Btw to sie nazywa funkcja składowa klasy (dawniej metoda) nie myl z funkcja z programowania strukturalnego
andkazm
6.03.2013, 13:25:35
Wywołanie strony wygląda tak :
( ! ) Warning: chdir() [function.chdir]: No such file or directory (errno 2) in C:\wamp\www\abc\projekcik1\includes\classes\oscthumb.php on line 271
Call Stack
# Time Memory Function Location
1 0.0084 711936 {main}( ) ..\index.php:0
2 0.0139 1019136 require( 'C:\wamp\www\abc\projekcik1\includes\application_top.php' ) ..\index.php:30
3 0.1838 3651440 oscthumb->check_hash( ) ..\application_top.php:667
4 0.1866 3652624 oscthumb->_clean_cache( ) ..\oscthumb.php:36
5 0.1866 3652656 chdir ( ) ..\oscthumb.php:271
i dalej mniej lub bardziej rozsypana zawartośc
Uwaga Ostrzeżenie: Istnieje możliwość zapisu pliku konfiguracyjnego w lokalizacji:
C:/wamp/www/abc/projekcik1/includes/configure.php. Istnieje ryzyko zagrożenia pracy systemu - zmień uprawnienia dla tego pliku.
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.