2009-04-08 9 views
1

J'ai installé plusieurs paquets PHP pour pouvoir utiliser PHP avec Apache mais aussi dans la ligne de commande. De tous les deux, je dois pouvoir me connecter aux bases de données MySQL. Assez simple non? Voilà ce que je pensais, mais avec php-cli je reçois l'erreur suivante:Problèmes avec php-cli et mysql, pourquoi mysql_pconnect() n'est pas disponible?

Fatal error: Call to undefined function mysql_pconnect() 

J'ai essayé à partir de zéro en supprimant tous les paquets en fonction et la configuration comme celle-ci:

sudo apt-get --purge remove php5 libapache2-mod-php5 php5-cli php5-mysql 

J'ai couru suivant commande pour installer les paquets:

sudo apt-get install php5 libapache2-mod-php5 php5-cli php5-mysql 

J'ai trouvé qui php.ini le cli utilise comme ça:

php -r "phpinfo();" | grep php.ini 

Ce qui me donne ceci:

Configuration File (php.ini) Path => /etc/php5/cli/php.ini 

Alors j'ai décommentée 'mysql.so' dans la section des extensions, mais quand je fais et exécutez la commande suivante, il dit:

PHP Warning: Module 'mysql' already loaded in Unknown on line 0 

Alors pour une raison quelconque, il pense qu'il est déjà chargé, mais avec ou sans le 'mysql.so' activé le php cli ne trouve pas la fonction 'mysql_pconnect'.

Je sais qu'il y a des sections pour activer les connexions persistantes, par défaut, et la fonction standard 'mysql_connect' n'est pas non plus disponible.

Qu'est-ce qui me manque? Merci!

UPDATE:

Comme suggéré par Bart S. « php -r "phpinfo();" | grep mysql ':

MYSQL_SOCKET => /var/run/mysqld/mysqld.sock 
MYSQL_INCLUDE => -I/usr/include/mysql 
MYSQL_LIBS => -L/usr/lib -lmysqlclient 
mysql.allow_persistent => On => On 
... and more 

De Jaka Jančar. 'Php -v' indique:

PHP 5.1.2 (cli) (built: Feb 11 2009 19:55:22)

Et à partir du mode interactif php « php -r 'var_dump (extension_loaded ("mysql"));' ne donne rien!

+0

Est-ce qu'il dit qu'il liste les modules MySQL lorsque vous exécutez phpinfo() ;? –

+0

@bart J'ai mis à jour ma question avec quelques informations supplémentaires –

+0

Pouvez-vous faire s'il vous plaît: php -v php -r 'var_dump (extension_loaded ("mysql"));' –

Répondre

1
php -i | grep mysql 

La première ligne doit contenir:

Configure Command => '../configure' ... '--with-mysql=shared,/usr' 

Vérifiez également

grep extension_dir /etc/php5/cli/php.ini 

Devrait être quelque chose comme: extension_dir = /usr/lib/php5/extensions vérifier ensuite les autorisations de /usr/lib/php5/extensions/mysql.so et si elle est bien liée:

ldd /usr/lib/php5/extensions/mysql.so 
-1

Est-ce que pconnect en mode cli a du sens? peut-être que cela fonctionne comme prévu.

Note: Note, that these kind of links only work if you are using a module version of PHP. See the Persistent Database Connections section for more information.

http://de2.php.net/mysql_pconnect

+0

mysql_connect ne fonctionne pas non plus. Et je pense que mysql_pconnect devrait fonctionner, mais idd cela n'a pas de sens, j'utilise les scripts cli du moteur de recherche sphyder. et je l'utilise exactement comme les docs me le disent. –

1

Vous ne pouvez pas utiliser pconnect en mode CLI. Vous n'avez pas un processus persistant comme le serveur Web qui peut contenir la connexion ouverte.

Questions connexes