2017-03-24 20 views
0

最近私はプロジェクトをライブ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'"; 

PDF

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'; 

答えて

0

このことから、結果を表示します。

+0

これは、特別なMySQLディレクトリに書き込むだけで、設定で無効にして、期待どおりに動作することを示しました。 –

関連する問題