Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Apach e2.2 + PHP 5.3 + MySQL 5.4: łączenie z bazą danych jako localhost
infoo1
post
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


Mam Apache 2.2, PHP 5.3 i MySQL 5.4. Gdy łączę się z bazą danych przy użyciu hosta "localhost", po minucie otrzymuję:
Cytat
Warning: mysql_connect() [function.mysql-connect]: [2002] Próba połšczenia nie powiodła się, ponieważ połšczona strona nie (trying to connect via tcp://localhost:3306) in D:\www\X\includes\class_db.php on line 11

Warning: mysql_connect() [function.mysql-connect]: Próba połšczenia nie powiodła się, ponieważ połšczona strona nie odpowiedziała poprawnie po ustalonym okresie czasu lub utworzone połšczenie nie powiodło się, ponieważ połšczony host nie odpowiedział. in D:\www\X\includes\class_db.php on line 11

Fatal error: Maximum execution time of 60 seconds exceeded in D:\www\X\includes\class_db.php on line 11


Jeśli łączę się przez host "127.0.0.1", wszystko działa. W pliku C:\Windows\System32\drivers\etc mam:
Kod
127.0.0.1       localhost
   ::1             localhost


Co jest źle?
Go to the top of the page
+Quote Post
vokiel
post
Post #2





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Zwiększ limity czasu wykonywania skryptu, czasu odpowiedzi serwera, timeout'a.

W etc wystarczy pierwsza linia
Go to the top of the page
+Quote Post
infoo1
post
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


Tego pliku w ogóle nie zmieniałem, został po webservie (bo najprawdopodobniej to on to zmienił).


A czas wykonywania skryptu jest wystarczający: 60 s.
Go to the top of the page
+Quote Post
vokiel
post
Post #4





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Cytat(infoo1 @ 9.11.2009, 21:44:34 ) *
A czas wykonywania skryptu jest wystarczający: 60 s.


Cytat
Fatal error: Maximum execution time of 60 seconds exceeded


(IMG:style_emoticons/default/blink.gif)
Go to the top of the page
+Quote Post
infoo1
post
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


Tak, ale na zwykły skrypt wystarczy. Przecież nie będę czekać 100^1000h na połączenie z bazą. Ze 127.0.0.1 łączy od razu. Z localhost nie jest w stanie się połączyć w ciągu 60s (pewnie gdyby nie limit czasu, ładowałoby się w nieskończoność).
Go to the top of the page
+Quote Post
vokiel
post
Post #6





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


A jaka masz konfiguracje httpd.conf?
Kod
Listen
ServerName


No i oczywiście pokaż jak się łączysz z bazą
Go to the top of the page
+Quote Post
infoo1
post
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


Kod
Listen 80
ServerName localhost:80


Kod
mysql_connnect('localhost','root','XXXXX');



Pojawił się jeszcze jeden problem:
W cmd->ipconfig mam jako IPv4 "192.18.1.100". Jak wchodzę na http://192.18.1.100/ pokazuje się:
Kod
Przerwane połączenie
Połączenie z serwerem zostało zresetowane podczas wczytywania strony.
Połączenie sieciowe zostało przerwane podczas negocjacji. Spróbuj ponownie.

Przy webservie działało. Porównałem httpd.conf webserva i mój - nie widzę tam niczego, co by mogło psuć połączenie przez localhost i 192.168.1.100.

Cały httpd.conf: http://wklejto.pl/46719
httpd.conf bez komentarzy i <ifmodule> (tylko to co w środku): http://wklejto.pl/46721
Cały plik my.ini: http://wklejto.pl/46725
my.ini bez komentarzy: http://wklejto.pl/46726
Go to the top of the page
+Quote Post
vokiel
post
Post #8





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Jeśli chcesz aby apache działał po wpisaniu ip komputera, to musisz na tym ip nasłuchiwać:
httpd.conf
Kod
Listen 127.0.0.1:80
Listen 192.18.1.100:80

ServerName localhost:80
ServerName 192.18.1.100:80


Teraz pozostał jeszcze plik
httpd-vhosts.conf
Kod
<VirtualHost *:80>
ServerName localhost
DocumentRoot "d:/www"
  <Directory "d:/www">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>

<VirtualHost *:80>
ServerName 192.168.1.100
DocumentRoot "d:/www"
  <Directory "d:/www">
    AllowOverride All
    Order allow,deny
    Allow from all
  </Directory>
</VirtualHost>
Go to the top of the page
+Quote Post
infoo1
post
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


Dodałem te listen i servername, zmieniłem extra/httpd-vhosts.conf i wywaliłem hashe przed:
Kod
LoadModule vhost_alias_module modules/mod_vhost_alias.so
Include conf/extra/httpd-vhosts.conf

192.168.1.100 działa, ale MySQL po localhoście - nie:

Kod
mysql_connect('127.0.0.1','root','XXXXXX'); //Ok
mysql_connect('localhost','root','XXXXXX'); //Crash




Cytat
Warning: mysql_connect() [function.mysql-connect]: [2002] Próba po³¹czenia nie powiod³a siê, poniewa¿ po³¹czona strona nie (trying to connect via tcp://localhost:3306) in D:\www\X\includes\class_db.php on line 11

Warning: mysql_connect() [function.mysql-connect]: Próba po³¹czenia nie powiod³a siê, poniewa¿ po³¹czona strona nie odpowiedzia³a poprawnie po ustalonym okresie czasu lub utworzone po³¹czenie nie powiod³o siê, poniewa¿ po³¹czony host nie odpowiedzia³. in D:\www\X\includes\class_db.php on line 11

Fatal error: Maximum execution time of 60 seconds exceeded in D:\www\X\includes\class_db.php on line 11



Bez problemu łączę się z bazą przez MySQL Administrator (dołączone z MySQL-em) wpisując usera root, host localhost, port 3306 i hasło XXXXXX...
Go to the top of the page
+Quote Post
vokiel
post
Post #10





Grupa: Zarejestrowani
Postów: 2 592
Pomógł: 445
Dołączył: 12.03.2007

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


Sprawdź czy firewall przypadkiem Ci nie blokuje tego portu
Zobacz co nasłuchuje na którym porcie (netstat -o, netstat -b lub nawet samo netstat)
Sprawdź czy zadziała Ci jeśli ręcznie podasz port.
Ew sprawdź w php.ini co masz w sekcji [MySQL], ustaw np mysql.default_port = 3306

Co prawda wydaje mi się, że mysql nie nasłuchuje na localhost. Temu jest timeout.
Manual pisze:
Cytat
If you want to use TCP/IP, use "127.0.0.1" instead of "localhost".

Poza tym: mysql-connect
Go to the top of the page
+Quote Post
infoo1
post
Post #11





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 12.11.2008

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


To pomogło: http://www.php.net/manual/en/function.mysq...nnect.php#94316 - vista jak zwykle miała swoje zdanie
Dzięki (IMG:style_emoticons/default/winksmiley.jpg)



Go to the top of the page
+Quote Post

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: 6.10.2025 - 11:27