【问题标题】:How to determine if PDO is enabled in PHP?如何确定是否在 PHP 中启用了 PDO?
【发布时间】:2011-05-24 15:56:53
【问题描述】:

有没有我可以用来确定 PDO 是启用还是禁用的 PHP 命令?

我知道我手动运行 phpinfo() 并观察它,但我有一个脚本,我运行各种 Web 服务器,显示服务器的选定 PHP 配置设置。

所以我想看看有没有我可以使用的命令。

【问题讨论】:

    标签: php pdo


    【解决方案1】:

    确定将使用 extension_loaded 函数的正确方法:-

    if ( extension_loaded('pdo') ) {
        .......
    }
    

    您可能还想使用以下方法检查特定于数据库的 PDO 驱动程序:-

    if ( extension_loaded('pdo_<database type here>') ) { // e.g., pdo_mysql
        .......
    }
    

    【讨论】:

    • 喜欢pdo_firebirdpdo_mysqlpdo_ocipdo_odbcpdo_pgsqlpdo_sqlitepdo_sqlite_external
    【解决方案2】:

    检查类是否存在:

    if (class_exists('PDO'))
    

    感谢大家的支持和我仍然得到的所有支持,但请查看Salman Abbas's answer 了解正确的方法。

    【讨论】:

    • 本来打算建议 defined() 但 PDO 切换到类常量。
    • 我对其进行了测试,这种方式可以完美运行(在启用它的服务器上和未启用的服务器上)。谢谢@AJ!
    • @AJ:将false 添加为第二个参数不是更好吗?如果 OP 只想检查是否存在,而不是同时自动加载类,我的意思是。
    • 除非某些疯狂的库开发者决定将他的 poly-device operator 类命名为 PDO
    【解决方案3】:

    只需在命令提示符下以 php -m 的形式运行命令,它将显示为 PHP 安装的模块列表

    【讨论】:

      【解决方案4】:

      你有两个选择:

      if (extension_loaded('pdo')) { /* ... */ }
      

      或者(这个不是 100% 可靠的,因为它可以在用户级类中实现):

      if (class_exists('PDO', false)) { /* ... */ }
      

      就个人而言,我更喜欢第一个选项。

      【讨论】:

        【解决方案5】:
        if (!defined('PDO::ATTR_DRIVER_NAME')) {
        echo 'PDO unavailable';
        }
        elseif (defined('PDO::ATTR_DRIVER_NAME')) {
        echo 'PDO available';
        }
        

        我希望这行得通

        【讨论】:

          【解决方案6】:

          怎么样

          if (in_array('pdo', get_loaded_extensions())) {
             ... pdo is there ...
          }
          

          【讨论】:

          • @Dr. DOT:它只是似乎。另外,AJ 没有写下那个答案。 GolezTrol 做到了。
          • 我知道......不知道我是如何或为什么拿起“AJ”——对不起@GolezTrol
          猜你喜欢
          • 2014-05-11
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2011-04-16
          • 1970-01-01
          • 2019-04-27
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多