最近私はプロジェクトをライブVMインスタンスに移動しました。これは、XAMPPを使用してMacOSボックスの開発とテスト中に完全に機能しました。基本的にWebアプリケーションには、XML、PDF、CSVの3つのエクスポートオプションがあります。 XMLは正常に動作し、SELECT文を使用して作成され、結果をループしてXMLファイルにプッシュします。 CSVおよびPDFエクスポート用しかし MySQL INTO OUTFILEをtmpに書き込まない
は、私が使用(PDFはTCPDFを使用しています):CSVファイルに書き込まれることは決してありませんしかし
INTO OUTFILE '/tmp/$department_name+feedback+$timestamp.csv' FIELDS TERMINATED BY ',' LINES TERMINATED BY '\n'";
INTO OUTFILE '/tmp/$department_name+feedback+$timestamp.txt' FIELDS TERMINATED BY ';' LINES TERMINATED BY '\n'";
/tmp。私はそれが権限の問題だと思ったが、ディレクトリはrootによって所有されており、必要な権限はすべて期待通りにある。次のように
作業XMLコードは次のとおりです。
$fileLocation = '/tmp/' . $location_name . '+feedback+' . $timestamp . '+.xml';
$sql = "SELECT CONCAT (e.name,' ', e.surname) AS Fullname, f.score AS Score, d.department_name AS Department, f.feedback AS Feedback
FROM employee AS e
JOIN feedback AS f
ON e.qr_id = f.qr_id
JOIN departments as d
ON e.department_id = d.department_id
JOIN location AS l
ON e.location_id = l.location_id
AND e.location_id = '$location'
AND e.company_id = '$company_id'
AND f.`report_Time` BETWEEN SUBDATE(CURDATE(),
INTERVAL 1 MONTH) AND NOW()
ORDER BY f.score DESC";
$xml = new XMLWriter();
$xml->openURI($fileLocation);
$xml->startDocument();
$xml->setIndent(true);
$xml->startElement('feedback');
foreach ($mysqli->query($sql) as $row){
$xml->startElement("Fullname");
$xml->writeRaw($row['Fullname']);
$xml->startElement("Score");
$xml->writeRaw($row['Score']);
$xml->startElement("Feedback");
$xml->writeRaw($row['Feedback']);
$xml->startElement("Department");
$xml->writeRaw($row['Department']);
$xml->endElement();
}
$xml->endElement();
header('Content-type: text/xml');
$xml->flush();
$file_url = $fileLocation;
header('Content-Type: application/xml');
header("Content-Transfer-Encoding: Binary");
header("Content-disposition: attachment; filename=\"" . basename($file_url) . "\"");
readfile($file_url);
は、だから私はそれが/ tmpディレクトリへの書き込みだとPDF & CSVがないときにXMLが機能する理由としてわからないよ、これが実行されていますGoogle Cloud Platform VMインスタンス。私が前に述べたように、CSV &は、MacOSマシン上でPDFエクスポートがうまく動作します。あなただけのこのディレクトリに書くことができるNULLでない結果場合
SHOW VARIABLES LIKE 'secure_file_priv';
:
これは、特別なMySQLディレクトリに書き込むだけで、設定で無効にして、期待どおりに動作することを示しました。 –