我想运行一个执行php脚本的cron作业。 该脚本的目的是使用从数据库中选择的数据创建csv文件并将其保存在服务器上。 这是我创建的命令:
php -c /home1/breezeea/public_html/php.ini /home1/breezeea/public_html/portaltest/ProductsToImportGenerator.php
我还设置了电子邮件确认,它似乎有效,但该文件不是在uploads目录中创建的。 屏幕显示我收到的确认电子邮件。有csv文件内容,所以我猜php脚本正确执行: 这是php脚本代码中最重要的部分($ productsArr是从数据库中恢复的产品):
function products_to_csv($productsArr, $filename = "productsToImport.csv", $delimiter=",")
{
$f = fopen('php://memory', 'w');
$headers = array("Product Name", "Product Url", "excerpt", "description", "Product Status", "Menu_order", "SKU", "Downloadable",
"Virtual", "visibility", "quantity", "stock status", "allow backorders", "manage_stock", "regular_price",
"sale_price", "weight", "length", "width", "height", "featureD", "sale_price_dates_from",
"sale_price_dates_to","download_limit", "download_expiry", "images", "download File name", "type", "category",
"product_tag", "shipping class");
fputcsv($f, $headers, $delimiter);
foreach($productsArr as $product)
fputcsv($f, $product, $delimiter);
fseek($f, 0);
header('Content-Type: application/csv');
header('Content-Disposition: attachement; filename="'.$filename.'";');
fpassthru($f);
fclose($f);
}
我是否应该以某种方式修改命令以将csv保存在uploads目录中?
感谢您的帮助
答案 0 :(得分:1)
您的脚本不会将文件保存在服务器上,它只会将其作为附件发送到打开脚本的浏览器。您应该将fpassthru
更改为file_put_contents()以将文件保存在服务器上。