开发者

How to connect to MySQL when using FastCGI for PHP under Apache on Windows Vista

I configured PHP to use Apache mod_fcgid. PHP is working, but after changes in configuration I am not able to connect to MySQL via PHP. How to fix this?

To check MySQL connection I use the following PHP code:

error_reporting(E_ALL);

$link = mysql_connect('127.0.0.1', 'root', 'password_here');
if (!$link) {
    die('Could not connect. Error message: <' . mysql_error() . '>');
}
echo 'Connected successfully';

Error message returned by mysql_error() is empty.

I use the following configuration in Apache:

LoadModule fcgid_module modules/mod_fcgid.so
<IfModule fcgid_module>  
AddHandler fcgid-script .fcgi .php  
DefaultInitEnv PHPRC "C:/Program Files/php5"
DefaultInitEnv PHP_FCGI_MAX_REQUESTS      1000  
MaxRequestsPerProcess       1000  
MaxProcessCount 15
IPCCommTimeout 120
IdleTimeout 120
FCGIWrapper "C:/PROGRA~1/php5/php-cgi.exe" .php  
AddType application/x-httpd-php .php  

DefaultInitEnv PATH "C:/PROGRA~1/MYSQL/MYSQLS~1.0/LIB/OPT;C:/PROGRA~1/APACHE~1/APACHE2.2/BIN;C:/WINDOWS/system32;C:/WINDOWS"
</IfModule>  

PHP 5.3.1, Apache/2.2.14开发者_如何学编程 (Win32), MySQL 5.0.67-community-nt, Windows Vista Home Premium Service Pack 1. I downloaded binaries of mod_fcgid from http://www.apachelounge.com/download/mods/mod_fcgid-2.2b-w32.zip

EDIT:

I used phpinfo() to compare configuration. "Loaded Configuration File" is the same for both with and without mod_fcgid. mysql section is the same for both configs. What I found out that Environment section when mod_fcgid is turned on contains only FastCGI related variable (4 items only), while without mod_fcgid - much more.

EDIT:

I obtain the following warning:

Warning: mysql_connect() [function.mysql-connect]: in E:\ ... \testphp\mysql.php on line 7

EDIT

Error log of mysql contain no any errors on mysql_connect().


Are you sure that Warning: mysql_connect() [function.mysql-connect]: in E:\ ... \testphp\mysql.php on line 7
is the full error ? Because that's unusual it should say what's wrong there.
Also please check your mysql server's log file for any anomalies and post them here. mysql error log documentation.


Have you tried running php_info() to see if the mysql module is present and configured for your CGI? The ini configuration can be different between CGI and other method of launching.


Got the same problem and solved it this way:

  1. Edit your php.ini file of cgi version (vi /etc/php5/cgi/php.ini)
  2. Add the following line: extension=mysql.so
  3. Restart your Apache (service apache2 reload AND /etc/init.d/apache3 restart)
0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜