[php/mysql] connect niet? *

Pagina: 1
Acties:

Onderwerpen


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ik heb een probleem dat niet zo zeer bij mijn PHP codeer kunsten ligt, want ik weet dat daar de fout niet zit. Het script zit namelijk zo in elkaar:

$link = mysql_pconnect("localhost", "****", "****") or die(mysql_error());
mysql_select_db("db") or die(mysql_error());
mysql_close($link) or die(mysql_error());

Maar nu krijg ik de volgende error:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (13) in /usr/local/apache2/htdocs/test.php on line 3

Dat klopt wel want mysql.sock is niet in /tmp/, de default dir daarvan is /var/lib/mysql/. Maar als ik een symbolic link van /tmp/mysql.sock naar de echte mysql.sock maak krijg ik precies dezelfde error. Vanuit de console kan ik gewoon mysql starten en dan doet alles het wel, het probleem lijkt dus bij PHP te liggen, alhoewel ik die gewoon met --with-mysql heb gecompiled.

Iemand enig idee?

[ Voor 6% gewijzigd door Verwijderd op 28-11-2005 15:35 ]


Acties:
  • 0 Henk 'm!

  • TheRookie
  • Registratie: December 2001
  • Niet online

TheRookie

Nu met R1200RT

al geprobeerd om achter de server het path naar de echte socket file te zetten:
server

The MySQL server. It can also include a port number. e.g. "hostname:port" or a path to a local socket e.g. ":/path/to/socket" for the localhost.
Staan de rechten goed ?

Acties:
  • 0 Henk 'm!

  • Bosmonster
  • Registratie: Juni 2001
  • Laatst online: 18-09 16:28

Bosmonster

*zucht*

En met een gewone mysql_connect ipv een pconnect?

Acties:
  • 0 Henk 'm!

Verwijderd

Bosmonster schreef op maandag 28 november 2005 @ 16:02:
En met een gewone mysql_connect ipv een pconnect?
Is een persistent connection en dat moet geen probleem geven.

[edit]
Zal het trouwns niet gebruiken behalve als je er een goede reden voor hebt.

[ Voor 17% gewijzigd door Verwijderd op 28-11-2005 16:05 ]


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
mysql_connect en _pconnect werken allebei niet. Als ik :3306 of :/var/lib/mysql/mysql.sock aan de localhost toevoeg doet ie het ook niet, hij geeft dezelfde error, a la:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/var/lib/mysql/mysql.sock' (13) in /usr/local/apache2/htdocs/test.php on line 3

Als ik php.ini edit om de default port en default socket via PHP in te stellen dan geeft ie ook die error, en zoekt ie niet meer voor /tmp/mysql.sock. Maar de socketfile in /var/lib/mysql bestaat gewoon.

Rechten staan goed neem ik aan, ik weet eerlijk gezegd niet hoe ik dat zou veranderen en het is een verse installatie dus dat zal niet verkeerd staan denk ik. Misschien helpt het als ik de user toegang geef waarop apache draait? (Zo ja, hoe doe ik dat?)

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

Error 13 == permission denied. Gaarnde de uitvoer van :

code:
1
2
3
4
ls -ld /var
ls -ld /var/lib
ls -ld /var/lib/mysql
ls -l /var/lib/mysql.sock


posten.

Acties:
  • 0 Henk 'm!

  • .oisyn
  • Registratie: September 2000
  • Laatst online: 03:42

.oisyn

Moderator Devschuur®

Demotivational Speaker

* 1 vraagteken is genoeg ;)

Give a man a game and he'll have fun for a day. Teach a man to make games and he'll never have fun again.


Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
code:
1
2
3
4
5
6
7
8
9
10
11
[root@h5 ~]# ls -ld /var
drwxr-xr-x  22 root root 4096 Nov 26 05:29 /var

[root@h5 ~]# ls -ld /var/lib
drwxr-xr-x  21 root root 4096 Nov 27 16:56 /var/lib

[root@h5 ~]# ls -ld /var/lib/mysql
drwx------  6 mysql mysql 4096 Nov 29 14:03 /var/lib/mysql

[root@h5 ~]# ls -l /var/lib/mysql/mysql.sock
srwxrwxrwx  1 mysql mysql 0 Nov 29 14:03 /var/lib/mysql/mysql.sock


Nu komen we ergens. Ik heb hierop /var/lib/mysql naar 755 ge'chmod, net als de andere dirs en hij geeft nu de volgende error als ik via PHP mysql_connect gebruik:

Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /usr/local/apache2/htdocs/test.php on line 3

Maar dat is wel een rare error, aangezien:

Version: '5.0.15-standard' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)

[ Voor 40% gewijzigd door Verwijderd op 29-11-2005 14:11 ]


Acties:
  • 0 Henk 'm!

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 09-09 17:11

Gertjan

mmmm, beer...

Verwijderd schreef op dinsdag 29 november 2005 @ 14:07:
Version: '5.0.15-standard' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)
Je gebruikt zo te zien versie 5.0 van MySQL? Dan moet je met PHP de mysqli-functies gebruiken om met je database te praten. En volgens mij zitten die functies alleen in PHP5: http://nl3.php.net/mysqli

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Als ik dat trucje gebruik om oude passwords te gebruiken kan ik in mijn testscript gewoon mysql_connect() gebruiken en gaat alles goed, maar als ik dan het script run waar ik de server voor heb gebouwd (voor een website), dan krijg ik het volgende:

Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /usr/local/apache2/htdocs/tgpm_func.php on line 14
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
Warning: mysql_select_db(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /usr/local/apache2/htdocs/tgpm_func.php on line 15

Warning: mysql_select_db(): A link to the server could not be established in /usr/local/apache2/htdocs/tgpm_func.php on line 15
Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)

En dit script kan ik niet veranderen, kan de source ook niet bekijken omdat deze is gecodeerd in 'Ioncube loader'. Maar nu heeft ie weer dezelfde error als eerst, en zoekt ie ook naar /tmp/mysql.sock? Ik snap het even niet meer.

Acties:
  • 0 Henk 'm!

  • Gertjan
  • Registratie: Oktober 2001
  • Laatst online: 09-09 17:11

Gertjan

mmmm, beer...

Wordt het dan niet eens tijd om de config van php en/of mysql aan te passen? :)
PHP heeft een configuratie-optie:
code:
1
2
3
; Default socket name for local MySQL connects.  If empty, uses the built-in
; MySQL defaults.
mysql.default_socket =


Kennelijk default hij bij jou naar /tmp/mysql.sock. Kun je die niet aanpassen, of ervoor zorgen dat MySQL die file wegschrijft waar PHP hem verwacht?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
Ah, het werkt! Wat ik heb gedaan is php.ini editen en de 'default socket' ingevuld (/var/lib/mysql/mysql.sock), en voor de zekerheid ook nog de default port en user. Nu werkt het perfect.

Bedankt voor de hulp.

Edit: Ali Illegali was me net voor. "Great minds think alike." ;)

[ Voor 17% gewijzigd door Verwijderd op 29-11-2005 14:39 ]


Acties:
  • 0 Henk 'm!

  • h3rj4n
  • Registratie: Juni 2005
  • Laatst online: 20-09 08:34
Hej,
Nu er toch iemand over een database begint en ik nu eindelijk weer een keer online ben op Tweakers.net kan ik net zo goed mijn vraag stellen! :P

Ik wil met een database gaan werken maar ik kan wel dingen in een database zetten maar ik heb geen idee hoe ik het uit de database haal en dan op het scherm laat zien. Het is mij wel gelukt om een wachtwoord enzo in te voeren waarmee je je kan aanmelden. Dan controleer ik dus of het ingevoerde wachtwoord wel klopt met wat er in de database staat.
Ik heb zelf nog niet echt met een database gewerkt en ik kan op internet ook geen goeie cursussen vinden.
Weet iemand nog een leuke cursus die ik kan volgens zodat mijn probleem is opgelost of heeft iemand het antwoord?

Acties:
  • 0 Henk 'm!

Verwijderd

Topicstarter
h3rj4n schreef op dinsdag 29 november 2005 @ 14:36:
Hej,
Nu er toch iemand over een database begint en ik nu eindelijk weer een keer online ben op Tweakers.net kan ik net zo goed mijn vraag stellen! :P

Ik wil met een database gaan werken maar ik kan wel dingen in een database zetten maar ik heb geen idee hoe ik het uit de database haal en dan op het scherm laat zien. Het is mij wel gelukt om een wachtwoord enzo in te voeren waarmee je je kan aanmelden. Dan controleer ik dus of het ingevoerde wachtwoord wel klopt met wat er in de database staat.
Ik heb zelf nog niet echt met een database gewerkt en ik kan op internet ook geen goeie cursussen vinden.
Weet iemand nog een leuke cursus die ik kan volgens zodat mijn probleem is opgelost of heeft iemand het antwoord?
Begin een eigen topic, dit heeft hier niets mee te maken. Alle functies om met MySQL te praten via PHP staan op www.php.net. Zoals mysql_query bijv.

Acties:
  • 0 Henk 'm!

  • igmar
  • Registratie: April 2000
  • Laatst online: 03-09 22:58

igmar

ISO20022

Verwijderd schreef op dinsdag 29 november 2005 @ 14:07:
code:
1
2
[root@h5 ~]# ls -ld /var/lib/mysql
drwx------  6 mysql mysql 4096 Nov 29 14:03 /var/lib/mysql
Deze is dus het probleem.
Warning: mysql_connect(): Client does not support authentication protocol requested by server; consider upgrading MySQL client in /usr/local/apache2/htdocs/test.php on line 3

Maar dat is wel een rare error, aangezien:

Version: '5.0.15-standard' socket: '/var/lib/mysql/mysql.sock' port: 3306 MySQL Community Edition - Standard (GPL)
Je clientlibs zijn ouder als je server (lees : je gebruikt libmysqlclient10 of 12). Of je client libs upgraden, of de server vertellen dat ie een oud pasword protocol mag gebruiken :

in my.cnf

code:
1
2
3
[mysqld]
.....
old_passwords   = 1


en daarna mysql opnieuw starten (een reload is NIET voldoende !!).

[ Voor 2% gewijzigd door igmar op 30-11-2005 09:46 . Reden: typos ]


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

h3rj4n schreef op dinsdag 29 november 2005 @ 14:36:
Nu er toch iemand over een database begint en ik nu eindelijk weer een keer online ben op Tweakers.net kan ik net zo goed mijn vraag stellen! :P
Zo'n beetje elk topic over PHP en MySQL hier voldoet aan je criteria. 8)7

Open inderdaad liever een eigen topic in plaats van andermans topic te kapen. Al kun je dat in dit geval beter niet doen. Tutorials moet je prima zelf kunnen vinden.

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.

Pagina: 1