php - Heroku 找不到 PDOServiceProvider

标签 php postgresql heroku pdo silex

所以我遵循了 heroku 提供的关于如何部署 php 应用程序的教程 https://devcenter.heroku.com/articles/getting-started-with-php#introduction

一切正常,除了我开始设置数据库的时候。起初我尝试在网上寻找不同的解决方案(即 Dokku deployed Silex can't find PdoServiceProvider ),但似乎没有用。

现在,我的代码如下所示:

<?php
    use Csanquer\Silex\PdoServiceProvider\Provider\PDOServiceProvider;
    //use Silex\Application;

    $dbopts = parse_url(getenv('DATABASE_URL'));
    $pdo = new PDOServiceProvider('pdo');
    //$app = new Application();
    $app->register($pdo,
        array(
            'pdo.server' => array(
                'driver'   => 'pgsql',
                'user' => $dbopts["user"],
                'password' => $dbopts["pass"],
                'host' => $dbopts["host"],
                'port' => $dbopts["port"],
                'dbname' => ltrim($dbopts["path"],'/')
            )
        )
    );
?>

然后我收到以下消息:

Uncaught Error: Class 'Csanquer\Silex\PdoServiceProvider\Provider\PDOServiceProvider' not found in /app/web/index.php:6

我该如何解决?

最佳答案

我希望你以前用过 composer,如果没有,请告诉我。尝试使用你的 Composer 安装 Doctrine DBAL:

composer require "doctrine/dbal:~2.5"

安装 Doctrine 后,您可以使用以下代码行:

$config = new \Doctrine\DBAL\Configuration();

$connParams = array(
    'driver'   => #driver -> pdo_mysql,
    'dbname'   => #dbname,
    'host'     => #host -> localhost,
    'user'     => #user,
    'password' => #password,
    'charset'  => #charset -> utf8
);
$conn = \Doctrine\DBAL\DriverManager::getConnection($connParams, $config);

您现在可以使用类似的东西:

$conn->query(#SomeSQL)
$conn->prepare(#SomeSQL)

或者以您喜欢的方式:

$app->register(new Silex\Provider\DoctrineServiceProvider(), array(
    'db.options' => array(
        'driver'   => #driver -> pdo_mysql,
        'dbname'   => #dbname,
        'host'     => #host -> localhost,
        'user'     => #user,
        'password' => #password,
        'charset'  => #charset -> utf8
    ),
));

您现在可以使用类似的东西:

$app['db']->query(#someSQL);

有关 Doctrine DBAL 的更多信息,请参阅此处或此处的页面。请让我知道这是否对您有帮助! (通过将问题标记为已完成或评论新错误)。

关于php - Heroku 找不到 PDOServiceProvider,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43751233/

相关文章:

postgresql - 使用 PostgreSQL JDBC 连接 URL 中/etc/hosts 中的条目

ruby-on-rails - Heroku rake 迁移

php - 使用 Swiftmailer 的 PHP 驱动的 HTML 联系表单有多安全?

php - html表单元素输入类型="number",其值为整数,如何显示2位或更多小数位。例如200如何显示为200.00

postgresql - 如何获取 OSM 文件以生成街道宽度?

php - Symfony 3.4,FOSUserBundle : SQL Errors with postgresql

heroku - 如何在 Heroku 的 Clojure buildpack 中配置构建命令?

ruby-on-rails - Heroku 推送错误 Assets 预编译端口错误

php - MySqli 查询执行时返回 PHP 错误 500

php - 如何运行具有多个值的删除sql查询