Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

2 Stron V   1 2 >  
Reply to this topicStart new topic
> Serwis - sklep internetowy nie chce działąć na serwerze lokalnym, mysql_query() expects parameter 2 to be resource, null given in
andkazm
post
Post #1





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #2





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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ę?
Go to the top of the page
+Quote Post
andkazm
post
Post #3





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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"
Go to the top of the page
+Quote Post
nospor
post
Post #4





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
andkazm
post
Post #5





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


TAK
Go to the top of the page
+Quote Post
nospor
post
Post #6





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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());
Go to the top of the page
+Quote Post
andkazm
post
Post #7





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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 .
Go to the top of the page
+Quote Post
nospor
post
Post #8





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
andkazm
post
Post #9





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #10





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No i super (IMG:style_emoticons/default/smile.gif)
Czyli teraz przechodzimy do punktu nr2: spójrz na mój edit z poprzedniego posta (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
andkazm
post
Post #11





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


ok , wykonam ten Twój test także , moment

sprawa się komplikuje , zapytanie obsługuje następująca funkcja :
  1. function tep_db_query($query, $link = 'db_link') {
  2. global $$link, $debug;
  3. $query_start = microtime();
  4.  
  5. if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
  6. error_log('QUERY ' . $query . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
  7. }
  8.  
  9. $result = mysql_query($query, $$link) or tep_db_error($query, mysql_errno(), mysql_error());
  10.  
  11. if (defined('STORE_DB_TRANSACTIONS') && (STORE_DB_TRANSACTIONS == 'true')) {
  12. $result_error = mysql_error();
  13. error_log('RESULT ' . $result . ' ' . $result_error . "\n", 3, STORE_PAGE_PARSE_TIME_LOG);
  14. }
  15.  
  16. $_start = explode(' ', $query_start);
  17. $_end = explode(' ', microtime());
  18. $_time = number_format(($_end[1] + $_end[0] - ($_start[1] + $_start[0])), 6);
  19.  
  20. $debug['QUERIES'][] = $query;
  21. $debug['TIME'][] = $_time;
  22. $debug['QUERY_TIME'] += $_time;
  23. return $result;
  24. }
  25.  
Go to the top of the page
+Quote Post
nospor
post
Post #12





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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()
Go to the top of the page
+Quote Post
andkazm
post
Post #13





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


ten fragment kodu wygląda tak :
  1. // include the database functions
  2. require(DIR_WS_FUNCTIONS . 'database.php');
  3.  
  4. // make a connection to the database... now
  5. tep_db_connect() or die('Nie mozna polaczyc sie z baza danych!');
  6.  
  7. // set the application parameters
  8. $configuration_query = tep_db_query('select configuration_key as cfgKey, configuration_value as cfgValue from ' . TABLE_CONFIGURATION);
  9. while ($configuration = tep_db_fetch_array($configuration_query)) {
  10. define($configuration['cfgKey'], $configuration['cfgValue']);
  11. }

i nie wykonuje się to po // set the application parameters
Go to the top of the page
+Quote Post
nospor
post
Post #14





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
andkazm
post
Post #15





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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 :
  1.  
  2. function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
  3. if (USE_PCONNECT == 'true') {
  4. $$link = mysql_pconnect($server, $username, $password);
  5. } else {
  6. $$link = mysql_connect($server, $username, $password);
  7. }
  8.  
  9. if ($$link) mysql_select_db($database);
  10. ## tep_db_query("SET NAMES latin2");
  11. return $$link;
  12. }
  13.  
  14. function tep_db_close($link = 'db_link') {
  15. global $$link;
  16.  
  17. return mysql_close($$link);
  18. }
  19.  
Go to the top of the page
+Quote Post
nospor
post
Post #16





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
andkazm
post
Post #17





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


w postaci
  1. mysql_query($query)
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
Go to the top of the page
+Quote Post
nospor
post
Post #18





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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.
Go to the top of the page
+Quote Post
andkazm
post
Post #19





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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
Go to the top of the page
+Quote Post
nospor
post
Post #20





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




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
Go to the top of the page
+Quote Post
andkazm
post
Post #21





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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 ?
Go to the top of the page
+Quote Post
nospor
post
Post #22





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Ostatnią zmianę o jaką cię prosiłem to jedne GLOBAL $$link w jednej funkcji. Nigdzie więcej.
Go to the top of the page
+Quote Post
andkazm
post
Post #23





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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 .....
Go to the top of the page
+Quote Post
nospor
post
Post #24





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




Nie miałeś dawać w żadnym index.php. Napisałem ci wyraźnie gdzie masz go dać...
Go to the top of the page
+Quote Post
andkazm
post
Post #25





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


wprowadziłem zmianę w kodzie o którą prosiłeś :
  1.  
  2. function tep_db_connect($server = DB_SERVER, $username = DB_SERVER_USERNAME, $password = DB_SERVER_PASSWORD, $database = DB_DATABASE, $link = 'db_link') {
  3. global $$link;
  4.  
  5. // dalej jak było
  6.  
  7.  
  8. if (USE_PCONNECT == 'true') {
  9. $$link = mysql_pconnect($server, $username, $password);
  10. } else {
  11. $$link = mysql_connect($server, $username, $password);
  12. }
  13.  
  14. if ($$link) mysql_select_db($database);
  15. ## tep_db_query("SET NAMES latin2");
  16. return $$link;
  17. }
  18.  



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
Go to the top of the page
+Quote Post
nospor
post
Post #26





Grupa: Moderatorzy
Postów: 36 559
Pomógł: 6315
Dołączył: 27.12.2004




No popatrz, tyle próśb o ten jeden global i jednak zadziałało.... (IMG:style_emoticons/default/wink.gif)

Dobra, niech ktoś inny zajmuje się resztą błędów, bo ja już nie mam sił prosić po 5 razy o to samo (IMG:style_emoticons/default/smile.gif)
Go to the top of the page
+Quote Post
andkazm
post
Post #27





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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)
Go to the top of the page
+Quote Post
com
post
Post #28





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

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


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 (IMG:style_emoticons/default/wink.gif)
Go to the top of the page
+Quote Post
andkazm
post
Post #29





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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 ...?
Go to the top of the page
+Quote Post
com
post
Post #30





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

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


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 ) (IMG:style_emoticons/default/wink.gif) a jak nie to przekopuj jego zawartość, bo czasem uprawnienia z serwera sie gryzą z windowsem (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 5.03.2013, 16:08:18
Go to the top of the page
+Quote Post
andkazm
post
Post #31





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


w linii 271 oscthumb.php mam

  1. function _clean_cache() {
  2. // Clean up the cache.
  3. if (chdir($this->cache_dir)) {
  4. if (glob("*.*")!=false)
  5. foreach (glob("*.*") as $filename) {
  6. if (!is_dir($filename)) {
  7. unlink($filename);
  8. }
  9. }
  10. chdir(DIR_FS_CATALOG);
  11. }
  12. }


a wyżej zdefiniowana jest funkcja :

  1. function oscthumb() {
  2. $this->cache_dir = DIR_FS_CATALOG.'phpThumb/cache';
  3. // For now we can change the cache folder only from here.
  4. $this->enabled = CFG_MASTER_SWITCH=="On"? true : false;
  5. }
  6.  



zmieniałem atrybuty , zakładałem nowy katalog a ta wredota
obstaje przy swoim
Go to the top of the page
+Quote Post
com
post
Post #32





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

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


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 (IMG:style_emoticons/default/biggrin.gif)

Btw to sie nazywa funkcja składowa klasy (dawniej metoda) nie myl z funkcja z programowania strukturalnego (IMG:style_emoticons/default/wink.gif)

Ten post edytował com 5.03.2013, 16:37:50
Go to the top of the page
+Quote Post
andkazm
post
Post #33





Grupa: Zarejestrowani
Postów: 24
Pomógł: 0
Dołączył: 4.03.2013

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


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.
Go to the top of the page
+Quote Post

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

 



RSS Aktualny czas: 2.10.2025 - 17:28