64-bit Linux -- Fatal ... undefined function mysql_connect()

64-bit Linux -- Fatal ... undefined function mysql_connect()

am 02.03.2010 05:54:51 von andrew jarcho

Hello all,

I'm running Fedora 12 (64-bit), Apache 2.2.14, PHP 5.3.1, MySQL
5.1.42, on a Dell laptop.

I'm trying to access a local MySQL database using PHP. When I execute
this code from the shell (as: php testcode.php)

$link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
if (!$link) {
die('Could not connect: ' . mysql_error());
}
echo 'Connected successfully';
mysql_close($link);
?>

I get the message:

Fatal error: Call to undefined function mysql_connect()

The FAQ on the PHP site says:

"Unix users, at least the ones who know what they are doing, tend to
always build PHP against their system's
libmysqlclient library simply by adding the --with-mysql=/usr option
when building PHP."

But I'd like to avoid compiling PHP from source. I've had endless
trouble getting non-rpm code to play nice with
this 64-bit distro of Fedora. Also, I don't want to wind up with
multiple copies of PHP (or MySQL, or Apache).

A reply to an earlier poster read:
======
It sounds like the MySQL extension module isn't loading. Here are some
things to confirm:
- Ensure the module is declared in your php.ini file
- If it exists in the php.ini, confirm the module is located and named
as stated in the php.ini file.
- If the module is named and located in the proper place, check your
permissions on that extension. You want to make sure whatever is running
your site can access the module.
=======
I've tried obeying the above instructions, with no luck. I'm also confused by
the lines in php.ini:

;;;;
; Note: packaged extension modules are now loaded via the .ini files
; found in the directory /etc/php.d; these are loaded by default.
;;;;

As guides, I initially used the following two pages:

http://forums.fedoraforum.org/showthread.php?t=94257 (Title: Every
server setup imaginable)
http://www.somacon.com/p109.php (Title: Resolving a Fatal error: Call
to undefined function
mysql_connect() in RedHat)
and have been reading the PHP and MySQL documentation.

As per the Fedora Forum thread, I have executed:
yum install php httpd system-config-httpd mod_ssl
as well as:
yum install mysql-server mysql mysql-gui-tools
and:
yum install php-mysql

I've also tried altering /etc/php.ini with
extension_dir = "/usr/lib64/php/modules/"
which is where my mysql.so is found, and
extension=mysql.so

The output of my phpinfo() includes:

mysql

MySQL Support enabled
Active Persistent Links 0
Active Links 0
Client API version 5.1.42
MYSQL_MODULE_TYPE external
MYSQL_SOCKET /var/lib/mysql/mysql.sock
MYSQL_INCLUDE -I/usr/include/mysql
MYSQL_LIBS -L/usr/lib64/mysql -lmysqlclient

Directive Local Value Master Value
mysql.allow_local_infile On On
mysql.allow_persistent On On
mysql.connect_timeout 60 60
mysql.default_host no value no value
mysql.default_password no value no value
mysql.default_port no value no value
mysql.default_socket /var/lib/mysql/mysql.sock /var/lib/mysql/mysql.sock
mysql.default_user no value no value
mysql.max_links Unlimited Unlimited
mysql.max_persistent Unlimited Unlimited
mysql.trace_mode Off Off


mysqli

MysqlI Support enabled
Client API library version 5.1.42
Active Persistent Links 0
Inactive Persistent Links 0
Active Links 0
Client API header version 5.1.39
MYSQLI_SOCKET /var/lib/mysql/mysql.sock

Directive Local Value Master Value
mysqli.allow_local_infile On On
mysqli.allow_persistent On On
mysqli.default_host no value no value
mysqli.default_port 3306 3306
mysqli.default_pw no value no value
mysqli.default_socket no value no value
mysqli.default_user no value no value
mysqli.max_links Unlimited Unlimited
mysqli.max_persistent Unlimited Unlimited
mysqli.reconnect Off Off

I'm just about out of ideas. The website I'm building will be strictly
local, for learning MySQL and PHP.

Can anybody help?

Thanks in advance...

Andy

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: 64-bit Linux -- Fatal ... undefined function

am 02.03.2010 06:20:48 von Chaitanya Yanamadala

--001636c92bb776d0b50480ca8876
Content-Type: text/plain; charset=UTF-8

hai andrew
Can u try like changing the ini file like this..
under mysql
change the to
mysql.default_port 3306 3306

and also if this time too it is not getting connected to the socket
try using the mysqli construct to connect to database..


this is for your reference
http://php.net/manual/en/mysqli.connect.php





Chaitanya

"A man can get discouraged many times but he is not a failure until he stops
trying..."

"I would love to change the world, but I can't get the source code."



On Tue, Mar 2, 2010 at 10:24 AM, andrew jarcho wrote:

> Hello all,
>
> I'm running Fedora 12 (64-bit), Apache 2.2.14, PHP 5.3.1, MySQL
> 5.1.42, on a Dell laptop.
>
> I'm trying to access a local MySQL database using PHP. When I execute
> this code from the shell (as: php testcode.php)
>
> > $link = mysql_connect('localhost', 'mysql_user', 'mysql_password');
> if (!$link) {
> die('Could not connect: ' . mysql_error());
> }
> echo 'Connected successfully';
> mysql_close($link);
> ?>
>
> I get the message:
>
> Fatal error: Call to undefined function mysql_connect()
>
> The FAQ on the PHP site says:
>
> "Unix users, at least the ones who know what they are doing, tend to
> always build PHP against their system's
> libmysqlclient library simply by adding the --with-mysql=/usr option
> when building PHP."
>
> But I'd like to avoid compiling PHP from source. I've had endless
> trouble getting non-rpm code to play nice with
> this 64-bit distro of Fedora. Also, I don't want to wind up with
> multiple copies of PHP (or MySQL, or Apache).
>
> A reply to an earlier poster read:
> ======
> It sounds like the MySQL extension module isn't loading. Here are some
> things to confirm:
> - Ensure the module is declared in your php.ini file
> - If it exists in the php.ini, confirm the module is located and named
> as stated in the php.ini file.
> - If the module is named and located in the proper place, check your
> permissions on that extension. You want to make sure whatever is running
> your site can access the module.
> =======
> I've tried obeying the above instructions, with no luck. I'm also confused
> by
> the lines in php.ini:
>
> ;;;;
> ; Note: packaged extension modules are now loaded via the .ini files
> ; found in the directory /etc/php.d; these are loaded by default.
> ;;;;
>
> As guides, I initially used the following two pages:
>
> http://forums.fedoraforum.org/showthread.php?t=94257 (Title: Every
> server setup imaginable)
> http://www.somacon.com/p109.php (Title: Resolving a Fatal error: Call
> to undefined function
> mysql_connect() in RedHat)
> and have been reading the PHP and MySQL documentation.
>
> As per the Fedora Forum thread, I have executed:
> yum install php httpd system-config-httpd mod_ssl
> as well as:
> yum install mysql-server mysql mysql-gui-tools
> and:
> yum install php-mysql
>
> I've also tried altering /etc/php.ini with
> extension_dir = "/usr/lib64/php/modules/"
> which is where my mysql.so is found, and
> extension=mysql.so
>
> The output of my phpinfo() includes:
>
> mysql
>
> MySQL Support enabled
> Active Persistent Links 0
> Active Links 0
> Client API version 5.1.42
> MYSQL_MODULE_TYPE external
> MYSQL_SOCKET /var/lib/mysql/mysql.sock
> MYSQL_INCLUDE -I/usr/include/mysql
> MYSQL_LIBS -L/usr/lib64/mysql -lmysqlclient
>
> Directive Local Value Master Value
> mysql.allow_local_infile On On
> mysql.allow_persistent On On
> mysql.connect_timeout 60 60
> mysql.default_host no value no value
> mysql.default_password no value no value
> mysql.default_port no value no value
> mysql.default_socket /var/lib/mysql/mysql.sock
> /var/lib/mysql/mysql.sock
> mysql.default_user no value no value
> mysql.max_links Unlimited Unlimited
> mysql.max_persistent Unlimited Unlimited
> mysql.trace_mode Off Off
>
>
> mysqli
>
> MysqlI Support enabled
> Client API library version 5.1.42
> Active Persistent Links 0
> Inactive Persistent Links 0
> Active Links 0
> Client API header version 5.1.39
> MYSQLI_SOCKET /var/lib/mysql/mysql.sock
>
> Directive Local Value Master Value
> mysqli.allow_local_infile On On
> mysqli.allow_persistent On On
> mysqli.default_host no value no value
> mysqli.default_port 3306 3306
> mysqli.default_pw no value no value
> mysqli.default_socket no value no value
> mysqli.default_user no value no value
> mysqli.max_links Unlimited Unlimited
> mysqli.max_persistent Unlimited Unlimited
> mysqli.reconnect Off Off
>
> I'm just about out of ideas. The website I'm building will be strictly
> local, for learning MySQL and PHP.
>
> Can anybody help?
>
> Thanks in advance...
>
> Andy
>
> --
> PHP Database Mailing List (http://www.php.net/)
> To unsubscribe, visit: http://www.php.net/unsub.php
>
>

--001636c92bb776d0b50480ca8876--

Re: 64-bit Linux -- Fatal ... undefined function mysql_connect()

am 02.03.2010 06:25:39 von dmagick

andrew jarcho wrote:
> Hello all,
>
> I'm running Fedora 12 (64-bit), Apache 2.2.14, PHP 5.3.1, MySQL
> 5.1.42, on a Dell laptop.



> I get the message:
>
> Fatal error: Call to undefined function mysql_connect()



> The output of my phpinfo() includes:

Is that from command line or webpage? They may read different php.ini files.

# php -i | grep mysql

return anything from the command line?

which config is it reading?

# php -i | grep php.ini

Is it the one you were editing previously?

--
Postgresql & php tutorials
http://www.designmagick.com/


--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php

Re: 64-bit Linux -- Fatal ... undefined function

am 02.03.2010 16:39:17 von andrew jarcho

On Tue, Mar 2, 2010 at 12:25 AM, Chris wrote:
> andrew jarcho wrote:
>>
>> Hello all,
>>
>> I'm running Fedora 12 (64-bit), Apache 2.2.14, PHP 5.3.1, MySQL
>> 5.1.42, on a Dell laptop.
>
>
>
>> I get the message:
>>
>> Fatal error: Call to undefined function mysql_connect()
>
>
>
>> The output of my phpinfo() includes:
>
> Is that from command line or webpage? They may read different php.ini files.
>
> # php -i | grep mysql
>
> return anything from the command line?
>
> which config is it reading?
>
> # php -i | grep php.ini
>
> Is it the one you were editing previously?
>
> --
> Postgresql & php tutorials
> http://www.designmagick.com/
>
>

Thanks *very* much to all who replied. This question has occupied most
of my time for two full days and it's a tremendous relief to know that
I'm not alone in my struggles.

As it turns out, php *was* trying to read a different .ini file when
invoked from the command line than when invoked via browser. I say
'trying to' because I had changed the name of the alternate php.ini to
'deactivate' it. I assumed that since php still worked in the browser,
I didn't need the other .ini.

I reactivated the alternate php.ini, told it the path to mysql.so, and
everything works as advertised.

I know with this version of php, I should be using mysqli.so, so
that's my next step.

Thanks again to everybody,

Andy

--
PHP Database Mailing List (http://www.php.net/)
To unsubscribe, visit: http://www.php.net/unsub.php