【发布时间】:2023-01-15 17:39:58
【问题描述】:
我有一个名为 test 的 php 项目,只有文件 index.php
如果我运行localhost/test,它总是工作正常。
现在,我试图通过php -S localhost:8080 运行该项目,但它总是抛出Connection Error: could not find driver。
我面临的问题是什么?我正在使用 Windows 10 和 PHP 8.2(PHP 7.4 也是如此)
<?php
class Database {
// DB Params
private $host = 'localhost';
private $db_name = 'mvc';
private $username = 'root';
private $password = '';
private $conn;
// DB Connect
public function connect() {
$this->conn = null;
try {
$this->conn = new PDO('mysql:host=' . $this->host . ';dbname=' . $this->db_name, $this->username, $this->password);
$this->conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
} catch(PDOException $e) {
echo 'Connection Error: ' . $e->getMessage();
}
return $this->conn;
}
}
$database = new Database();
$database->connect();
?>
【问题讨论】:
-
似乎未安装 PDO 驱动程序,或者可能未启用。首先检查您的 php.ini。如果您安装的 PHP 版本没有附带它,您可能需要单独安装它,或者您可能只需要启用它。你做过研究吗?如果您搜索该错误,我很确定人们已经在线提出了修复此问题的建议。
-
我已经尝试了很多解决方案,但没有奏效。
pdo_mysql始终在我的 php.ini 上启用。为什么当我执行localhost/test时它可以工作,但当我运行php -S localhost:8080时它却不工作?也许我还缺少其他东西。 -
也许其中每一个都基于带有单独 ini 文件的单独 PHP 安装?我们看不到您的机器,因此很难确定发生了什么。但是,如果您已经在机器中加载了 PHP 并与 Apache 一起工作,为什么还需要命令行服务器呢?
-
好吧,最终您的实时系统可能会在 Apache 之类的系统上运行,因此您最终需要正确配置它。您不能在 PHP 内置服务器上运行生产应用程序,因此无论如何您都需要弄清楚如何运行。无论如何,我的意思是您可以将 Apache 的根目录指向您的
public文件夹...这不会影响您随后读取 URI 以确定确切路由的能力。 -
附言您是否从
php -S服务器运行phpinfo()以确定它认为在驱动程序等方面安装了什么?
标签: php pdo mysql-connector