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 用户不同。