इससे आपको अपने त्रुटि लॉग या कम से कम सेटिंग पर एक नज़र डालने में मदद मिली होगी
ini_set('error_reporting', E_ALL);
ini_set('display_errors', 1);
जैसा कि उसने आपको बताया होगा कि base64_encode एक स्ट्रिंग की अपेक्षा करता है लेकिन $output एक संसाधन है।
सेटिंग करने का प्रयास करें
ob_start();
शुरुआत तक और
$output = ob_get_flush();
आपके fclose और $encoded लाइनों के बीच।
अभी तक मेल की कोशिश नहीं की है लेकिन इससे आपको कम से कम थोड़ी मदद मिलनी चाहिए :)
मैंने इस कोड को आजमाया और सब कुछ ठीक रहा:
<?php
ob_start();
header('Content-Type: text/csv; charset=utf-8');
header('Content-Disposition: attachment; filename=surveys.csv');
$output = fopen('php://output', 'w');
fputcsv($output, array('Name', 'Branch', 'Website','Company', 'Question1', 'Question2', 'Question3', 'Question4', 'Question5'));
$data = array();
$data[] = array('Name', 'Branch', 'Website','Company', 'Question1', 'Question2', 'Question3', 'Question4', 'Question5');
foreach( $data as $row )
{
fputcsv($output, $row, ',', '"');
}
fclose($output);
$output = ob_get_flush();
$encoded = chunk_split(base64_encode($output));