2011-06-11 24 views
0

我有一個PHP文件,如果在瀏覽器中執行工作得很好,但是當我在終端執行它,PDO連接在終端執行不工作

php /opt/lampp/htdocs/xampp/site_name/update_db.php

的PDO包括和連接做似乎沒有工作,因爲我的錯誤

could not find driverPHP Fatal error: Call to a member function prepare() on a non-object in /opt/lampp/htdocs/xampp/site_name/update_db.php on line 8

update_db.php

include("roc/include/connection.php"); 
$db = new PDOConnectionFactory(); 
$conn = $db->getConnection(); 

//prepare for utf8 characters 
$sql = 'SET NAMES utf8'; 
$stmt = $conn->prepare($sql); 
$result=$stmt->execute(); 

$sql = 'SET CHARACTER SET utf8'; 
$stmt = $conn->prepare($sql); 
$result=$stmt->execute(); 
//************************** 


$sql = 'update video SET 
status=? WHERE file_name=?'; 
$stmt6 = $conn->prepare($sql); 
$result=$stmt6->execute(array('1','5cca985383047644f51c4f31d906c8f8')); 

任何人有什麼想法?

+0

我認爲它可能是你正在執行的目錄和你的php包含路徑設置的組合。 – datasage 2011-06-11 17:04:58

+1

也有可能cli php使用的是不同於php版本的php.ini文件。如果pdo模塊在主php.ini中加載而不在cli版本中,則會發生。 – spuriousdata 2011-06-11 17:15:11

+0

你怎麼知道cli php.ini文件在哪裏? – Scarface 2011-06-11 17:16:30

回答

1

此主題已經被解決。閱讀評論。

0

聽起來像權限問題。當您從瀏覽器執行腳本時,執行用戶通常是您的Web服務器(即Apache),當您從控制檯執行它時 - 登錄用戶正在執行它。

+0

整個site_name目錄是777. – Scarface 2011-06-11 17:12:26

0

是的,你需要在命令行上設置路徑或使用絕對路徑。

+0

你如何做到這一點?那是什麼意思? – Scarface 2011-06-11 17:11:57

+1

[set_include_path](http://us3.php.net/manual/en/function.set-include-path.php),但最安全的事情是使用include語句的絕對路徑,例如include(「/ opt/lampp/htdocs/xampp/site_name/roc/include/connection.php「);' – ldg 2011-06-11 17:17:54

+1

...或使用'required'而不是'include'(至少要調查這一刻) - 它會給你一個錯誤,如果文件沒有找到一些更多的信息。 – LazyOne 2011-06-11 17:23:23