【问题标题】:PDO class not found on shared hosting在共享主机上找不到 PDO 类
【发布时间】:2016-08-05 12:46:18
【问题描述】:

我有一段代码一直在 PHP 5.4 上运行,但在 PHP 5.6 上却没有运行。 PDO 的一些问题。我的代码在这里:

<?php
session_start();

error_reporting(E_ERROR | E_WARNING | E_PARSE);

ini_set('session.cookie_httponly', 1);
ini_set('session.gc_maxlifetime', 999604800);
ini_set('session.cookie_lifetime', 999604800);

$baseurl = 'http://'.$_SERVER['SERVER_NAME'].'/';
$hostname = $_SERVER['SERVER_NAME'];

//if(!defined('PDO::ATTR_DRIVER_NAME')) { die('PDO unavailable'); }

class connect_data {

    static $host = 'localhost'; //хост базы данных
    static $username = 'aqq13807'; //логин базы данных
    static $password = 'd,8p9\FP%kZDZ)R'; //пароль базы данных
    static $db = 'aqq13807_d1'; //имя базы данных

}

class sql {
bla-bla-bla
}

$sql = new sql();

class pdo_connector {

    //const DBNAME = 'aqq13807_d1'; //имя базы данных
    //const DBLOGIN = 'root'; //логин базы данных
    //const DBPASS = 'aq798803'; //пароль базы данных

    const MINIMUM_PHP = '5.1.0';

    private function check_version() {

        if(version_compare(PHP_VERSION, self::MINIMUM_PHP, '<')) {

            return 'На вашем сервере должна быть установлена версия PHP ' . self::MINIMUM_PHP . ' или выше для работы с коннектором PDO!';

        }

    }

    public static function transaction($query = null, $op_type) {

        self::check_version();

        try {
            $dbh = new PDO('mysql:dbname='.connect_data::$db, connect_data::$username, connect_data::$password, array( PDO :: ATTR_PERSISTENT => true ));
        }

当我尝试“使用 PDO”时出现错误 -

警告:非复合名称“PDO”的 use 语句无效 在第 3 行的 bla-bla/testpdo.php 中

警告:session_start():无法发送会话缓存限制器 - 标头 已经发送(输出从第 2 行的 bla-bla/config.php 开始

我也尝试编写类似 \PDO 的东西,但它也不起作用。我也一直在尝试像这样通过 php.ini 加载 pdo

extension_dir = "/usr/local/lib/php/extensions/no-debug-non-zts-20100525"
extension = "xcache.so"
extension = "pdo.so"
extension = "pdo_sqlite.so"
extension = "imagick.so"
extension = "pdo_mysql.so"

但它也不起作用,所以我检查了 phpinfo,它看起来像 PDO 的一切正常。

【问题讨论】:

  • 你不需要use PDO。它会自动包含在内。
  • 我实际上并没有在该脚本中看到use PDO..?!
  • testpdo.php 的第 3 行是什么?
  • 我试图在“class connect_data”之前的前几行之后“使用 PDO”
  • testpdo.php &lt;?php require_once './include/config.php'; $getVal = pdo_connector::transaction("SELECT * FROM drivers_profile", 'select'); var_dump($getVal);

标签: php mysql pdo php-5.6


【解决方案1】:

是的,问题已经完成,问题是 php.ini 文件,它被删除,然后一切正常。我不知道为什么,但是我的主机通过文件通知了我有关此操作的信息。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2018-06-12
    • 1970-01-01
    • 2018-09-04
    • 2014-11-30
    • 2017-04-13
    • 2022-12-29
    • 1970-01-01
    • 2020-10-01
    相关资源
    最近更新 更多