2014-05-09 20 views
0

我嘗試寫的OAuth類VK能夠在我的網站驗證用戶身份。我面臨的問題是,我在Windows上編寫的代碼在Linux上根本無法工作。PDO無法在Linux下運行的查詢

我已經成功地通過PHP-> PDO腳本連接到我的Linux數據庫,但問題是,任何功能的IM試圖執行,即時通訊無法獲得響應或查詢,只是沒有發生。

這裏是函數的例子:

Class Account 
{ 
    private $Connection; 
    private $ErrorHandler; 
    private $Template; 

    public function __construct() 
    { 
     global $DB, $Error, $Smarty; 
     $this->Connection = $DB->DBConnection; 
     $this->Template = $Smarty; 
     $this->ErrorHandler = $Error; 
    } 
public function CheckDataWithVK($Username, $First_Name, $Last_Name, $Birth_Date) 
{ 
     $StatementHandler = $this->Connection->prepare("SELECT username,email,first_name,last_name FROM account WHERE username LIKE :username OR first_name LIKE :fname AND last_name LIKE :lname"); 
     $StatementHandler->execute(array(':username' => $Username, ':fname' => $First_Name, ':lname' => $Last_Name)); 
     $Result = $StatementHandler->fetch(PDO::FETCH_ASSOC); 
     if($Result['username'] == $Username) 
     { 
      $BuildUserNameArray = array('Username' => $Username, 'Email' => $Result['email'], 'Name'=> $Result['first_name'], 'Surname' => $Result['last_name']); 
      return $BuildUserNameArray; 
     } 
     else 
     { 
      if($Result['first_name'] == $First_Name && $Result['last_name'] == $Last_Name) 
      { 
       $BuildCredentialsArray = array('Username' => $Result['username'], 'Email' => $Result['email'], 'Name'=> $First_Name, 'Surname' => $Last_Name); 
       return $BuildCredentialsArray; 
      } 
      else 
      { 
       return false; 
      } 
     } 
} 

所以在Windows上,即時通訊能夠獲得的所有數據,並檢查用戶是否在數據庫中存在,但不能在Linux上。

讓我自私,說在這種事情,即時通訊怪胎,但即使PDO返回任何異常,因此即時通訊無法跟蹤的數據流併發生錯誤。

我已經檢查日誌,但似乎並不甚至執行該語句...

任何幫助嗎? 在此先感謝

順便說一句,即時通訊在我的所有網站上使用相同的類,它只是一個行爲像這樣....是的,我tripple檢查所有設置,一切都是正確的。使用 此外,IM:

$this->DBConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 

所以至少,如果有例外,我應該看到的東西,但我什麼也看不到 - >無例外

這裏是我的Database.Class.php

public $DBConnection; 
private $Template; 

public function __construct($username, $password, $database) 
{ 
    global $Smarty; 
    $this->Template = $Smarty; 
    try 
    { 
     $this->DBConnection = new PDO("mysql:host=127.0.0.1;dbname=".$database, $username, $password, array(PDO::ATTR_PERSISTENT => true)); 
     $this->DBConnection->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    } 
    catch(PDOException $e) 
    { 
     $message = $e->getMessage(); 
     $this->Template->assign('ErrorHeader', $this->Template->getConfigVars('DatabaseError')); 
     $this->Template->assign('ErrorMessage', $e->getMessage()); 
     $this->Template->Display('ErrorHandler.tpl'); 
     echo "<!-- FreedomCore Servers: PDO Connection Error: $message -->\n"; 
     die(); 
    } 
} 

我的不好,忘了提....白癡.... 我能夠插入值,但有問題,此特定功能

+0

運行phpinfo()函數,看看是否PDO啓用 –

+0

打開'error_reporting'。 – Sammitch

+0

PDO已啓用且error_reporting根本不顯示任何內容 –

回答

0

問題是通過更新服務器PHP庫到5.5.12版本解決的。

在Windows上我一直在使用5.5.5,在Linux 5.4.4,我認爲這是什麼原因造成的問題