【发布时间】:2014-02-23 17:53:47
【问题描述】:
首先,我是 PHP 新手,这是我在 stackoverflow 上的第一篇文章。 我正在尝试使用 mysqli_connect() 将记录写入测试数据库中的用户表。 在 mysql-client 中,我可以使用以下命令添加记录:
INSERT INTO users VALUES ( 'id' , 'smith' , 'joe' , 'joepass' );
据我了解,以下 .php 页面在浏览器中被点击时应将 joe smith 添加到 users 表中:
<?php
echo "php start";
$con = mysqli_connect( "localhost" , "root" , "rootpass" , "db_name");
// Check connection
if (mysqli_connect_errno())
{
echo "Failed to connect to MySQL: " . mysqli_connect_error();
}
mysqli_query( $con , "INSERT INTO users values ( 'id' , 'smith' , 'joe' , 'joepass' )");
mysqli_close($con);
echo "php end";
?>
但是当我在浏览器中访问此页面时,我看到的只是文本“php start”,它是第一个 echo 语句。我也希望看到“php end”这个词。当我检查 mysql 客户端中的用户表时,我看不到新记录。另外,当我使用php -a 打开php 交互式shell 并运行命令mysqli_connect(); 时,响应为PHP Fatal error: Call to undefined function mysql_connect() in php shell code on line 1。
这让我相信 mysqli_connect 没有在 php.ini 中正确安装或配置,但我对 php.ini 的理解不够好,无法很好地排除故障。另外,我有一个 phpinfo() test.php 页面。在 phpinfo() 的“Credits”表中,我看到以下几行:
MySQL driver for PDO George Schlossnagle, Wez Furlong, Ilia Alshanetsky, Johannes Schlueter
MySQLi Zak Greant, Georg Richter, Andrey Hristov, Ulf Wendel
MySQLnd Andrey Hristov, Ulf Wendel, Georg Richter, Johannes Schlueter
MySQL Zeev Suraski, Zak Greant, Georg Richter, Andrey Hristov
要在这个 Ubuntu 服务器上安装 php、apache 和 mysql,我运行的命令是:
sudo apt-get install apache2
sudo apt-get install php5
sudo apt-get install mysql-server
sudo apt-get install mysql-client
sudo apt-get install php5-cli
我记得的唯一附加配置是在apache2/mods-available/dir.conf 行DirectoryIndex 中添加几个文件名,以自动打开某些文件名。
有没有mysqli需要配置才能使用功能?
另外,这是一个 AWS 服务器,但我看不出 'localhost' 可能存在任何网络问题...:P
我还将在/etc/php5 目录中包含grep -r 'mysqli' 输出:
php5 grep -r 'mysqli'
apache2/php.ini:; http://php.net/mysqli.max-persistent
apache2/php.ini:mysqli.max_persistent = -1
apache2/php.ini:; http://php.net/mysqli.allow_local_infile
apache2/php.ini:;mysqli.allow_local_infile = On
apache2/php.ini:; http://php.net/mysqli.allow-persistent
apache2/php.ini:mysqli.allow_persistent = On
apache2/php.ini:; http://php.net/mysqli.max-links
apache2/php.ini:mysqli.max_links = -1
apache2/php.ini:; http://php.net/mysqli.cache_size
apache2/php.ini:mysqli.cache_size = 2000
apache2/php.ini:; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
apache2/php.ini:; http://php.net/mysqli.default-port
apache2/php.ini:mysqli.default_port = 3306
apache2/php.ini:; http://php.net/mysqli.default-socket
apache2/php.ini:mysqli.default_socket =
apache2/php.ini:; http://php.net/mysqli.default-host
apache2/php.ini:mysqli.default_host =
apache2/php.ini:; http://php.net/mysqli.default-user
apache2/php.ini:mysqli.default_user =
apache2/php.ini:; Default password for mysqli_connect() (doesn't apply in safe mode).
apache2/php.ini:; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
apache2/php.ini:; http://php.net/mysqli.default-pw
apache2/php.ini:mysqli.default_pw =
apache2/php.ini:mysqli.reconnect = Off
cli/php.ini:; http://php.net/mysqli.max-persistent
cli/php.ini:mysqli.max_persistent = -1
cli/php.ini:; http://php.net/mysqli.allow_local_infile
cli/php.ini:;mysqli.allow_local_infile = On
cli/php.ini:; http://php.net/mysqli.allow-persistent
cli/php.ini:mysqli.allow_persistent = On
cli/php.ini:; http://php.net/mysqli.max-links
cli/php.ini:mysqli.max_links = -1
cli/php.ini:; http://php.net/mysqli.cache_size
cli/php.ini:mysqli.cache_size = 2000
cli/php.ini:; Default port number for mysqli_connect(). If unset, mysqli_connect() will use
cli/php.ini:; http://php.net/mysqli.default-port
cli/php.ini:mysqli.default_port = 3306
cli/php.ini:; http://php.net/mysqli.default-socket
cli/php.ini:mysqli.default_socket =
cli/php.ini:; http://php.net/mysqli.default-host
cli/php.ini:mysqli.default_host =
cli/php.ini:; http://php.net/mysqli.default-user
cli/php.ini:mysqli.default_user =
cli/php.ini:; Default password for mysqli_connect() (doesn't apply in safe mode).
cli/php.ini:; *Any* user with PHP access can run 'echo get_cfg_var("mysqli.default_pw")
cli/php.ini:; http://php.net/mysqli.default-pw
cli/php.ini:mysqli.default_pw =
cli/php.ini:mysqli.reconnect = Off
【问题讨论】:
-
现在我点击的 php 页面显示为:
Fatal error: Call to undefined function mysqli_connect() in /var/www/php-mysql/insert_user.php on line 5
标签: php mysql apache ubuntu mysqli