2009-04-08 13 views
1

我已經安裝了各種PHP軟件包,可以在Apache中使用PHP,但也可以在命令行中使用。從這兩個我需要能夠連接到MySQL數據庫。很簡單的權利?這就是我想,但用PHP-CLI我收到以下錯誤:通過刪除喜歡這一切取決於包和配置php-cli和mysql的問題,爲什麼mysql_pconnect()不可用?

Fatal error: Call to undefined function mysql_pconnect() 

我試圖從頭開始:

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

然後我碰到以下命令來安裝軟件包:

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

然後我發現了這php.ini中的CLI使用這樣的:

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

,給了我這樣的:

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

,我已經在擴展部分取消註釋「mysql.so」但是當我做,運行下面的命令,它說:

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

所以出於某種原因,他認爲它已經被加載,但無論是否啓用'mysql.so',php cli都不會找到'mysql_pconnect'函數。

我知道有一個部分可以啓用持久性連接,默認情況下,標準函數'mysql_connect'也不可用。

我缺少什麼?謝謝!

UPDATE:

如所建議的由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 

從JakaJančar。 'PHP -v' 示出:

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

而從PHP交互模式的PHP -R '的var_dump(extension_loaded( 「MySQL的」));'什麼也不給!

+0

是不是說它執行phpinfo();時會列出MySQL模塊? – 2009-04-08 08:42:46

+0

@bart我已經更新了我的問題,並提供了一些更多信息 – 2009-04-08 08:51:03

回答

1
php -i | grep mysql 

的第一行應包含:

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

還要檢查

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

應該是這樣的:extension_dir = /usr/lib/php5/extensions 然後檢查的/usr/lib/php5/extensions/mysql.so權限,如果它的正確鏈接:

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

cli模式下的pconnect是否有意義?也許這是「按預期工作」。

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

1

你不能使用pconnect在CLI模式。你沒有像Web服務器那樣可以保持開放連接的持久化進程。