新服務器:PHP 5.5.3-1ubuntu2(CLI) 舊服務器:PHP 5.3.10(CLI)
在數據庫服務器上,my.cnf中設置爲允許本地INFILE。 我可以使用負載數據從本地INFILE:
- HeidiSQL
- The command line client running on the new web server using --local-infile=1
- PHP, using PDO, from the old web server
然而,當我嘗試從全新的Web服務器連接,使用PHP與PDO,我得到: 出現數據庫問題:SQLSTATE [42000]:語法錯誤或訪問衝突:1148所使用的命令是不允許使用此版本的MySQL
的php.ini:
[MySQL]
; Allow accessing, from PHP's perspective, local files with LOAD DATA statements
; http://php.net/mysql.allow_local_infile
mysql.allow_local_infile = On
PDO構造:
$this->db_conn = new PDO("mysql:host=$host;dbname=$dbname;port=$port", $user, $pass, array(PDO::MYSQL_ATTR_LOCAL_INFILE => 1));
我也在PHP腳本中嘗試了ini_set('mysql.allow_local_infile',1)和ini_set('mysql.allow_local_infile',true)。
LOCAL關鍵字是必需的,因爲文件託管在Web服務器上,而不是數據庫服務器上。
PHP 5.5對我有什麼要求?
+0
和你的MySQL版本? –
+1
這可能是一個權限問題?就我所知,PDO在這方面沒有做任何特別的事情。 –
+0
MySQL Database: mysql Ver 14.14 Distrib 5.1.69,用於使用readline 5.1的redhat-linux-gnu(x86_64)。 託管在CentOS 5. 我在所有測試中使用相同的用戶名和密碼,所以它不應該是MySQL權限問題。 PHP腳本由root執行。 –