SQL 查询和临时文件权限
SQL query and temporary file permissions
我正在尝试使用 HTML/PHP 在 MySQL 数据库中导入 .csv 文件。代码是:
HTML
<form method="post" action="" enctype="multipart/form-data">
File: <input type="file" name="csv">
<input type="submit" value="Send" name="subCSV">
</form>
PHP
$file = $_FILES["csv"]["tmp_name"];
try {
$query = $connexion -> prepare("LOAD DATA INFILE ? into TABLE myTable FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS");
$query->bindValue(1, $file, PDO::PARAM_STR);
$query->execute();
} catch(PDOException $e) { echo $e->getMessage(); $errorCode = $e->getCode();
但是我收到了那个错误:
File '/tmp/phpl8eY59' not found (Errcode: 13)
明确指定文件有效。权限很好,用户 运行 Apache 和文件所有者是相同的。我已授予数据库用户文件权限。
显然配置 AppArmor 可以解决问题,但我没有使用它,因为它没有安装在我的服务器上。
您可以尝试使用 "LOAD DATA LOCAL INFILE"。请参阅此处的答案:LOAD DATA INFILE does not work。问题是这个问题似乎有多种原因。
我已经解决了这个问题:
chmod($file, 0644);
Apache/PHP 用户和 MySQL 用户不同。
我正在尝试使用 HTML/PHP 在 MySQL 数据库中导入 .csv 文件。代码是:
HTML
<form method="post" action="" enctype="multipart/form-data">
File: <input type="file" name="csv">
<input type="submit" value="Send" name="subCSV">
</form>
PHP
$file = $_FILES["csv"]["tmp_name"];
try {
$query = $connexion -> prepare("LOAD DATA INFILE ? into TABLE myTable FIELDS TERMINATED BY ';' LINES TERMINATED BY '\r\n' IGNORE 1 ROWS");
$query->bindValue(1, $file, PDO::PARAM_STR);
$query->execute();
} catch(PDOException $e) { echo $e->getMessage(); $errorCode = $e->getCode();
但是我收到了那个错误:
File '/tmp/phpl8eY59' not found (Errcode: 13)
明确指定文件有效。权限很好,用户 运行 Apache 和文件所有者是相同的。我已授予数据库用户文件权限。
显然配置 AppArmor 可以解决问题,但我没有使用它,因为它没有安装在我的服务器上。
您可以尝试使用 "LOAD DATA LOCAL INFILE"。请参阅此处的答案:LOAD DATA INFILE does not work。问题是这个问题似乎有多种原因。
我已经解决了这个问题:
chmod($file, 0644);
Apache/PHP 用户和 MySQL 用户不同。