Intereting Posts
Могу ли я подсчитывать сеансы, чтобы определить количество людей в Интернете? Как запустить php-файл в качестве задания cron в cPanel в службе Bigrock Shared Hosting? Чтение больших данных из файла csv в php ORA-24408: невозможно создать уникальное имя группы серверов PHP: объединить 2 многомерных массива Написание и редактирование файла конфигурации PHP из HTML-формы? Запрашивать фактический SQL-запрос с помощью ActiveRecord с Yii2? Доктрина всегда возвращает нулевые значения в производстве Каков наилучший способ обработки сеансов для PHP-сайта на нескольких хостах? Не удается открыть последовательный порт с помощью PHP Могу ли я просто выбрать один столбец в MYSQL вместо всех, чтобы сделать его быстрее? PHP-массив для строковой ошибки преобразования Ошибка CakePHP SQLSTATE «Пароль не принимается с сервера: 535 Неверные данные аутентификации» при отправке с помощью GMail и phpMailer хотите вызвать один файл phtml в другом файле phtml с помощью тега привязки

Невозможно изменить информацию заголовка о статической функции

То, что я хочу сделать, – вызов класса для экспорта данных mysql в excel из другого класса. Ниже приведен код, который я использовал (я пропустил код для открытия соединения):

//This is the class for calling the `ExportToExcel` class Class SampleClass { public static function mainFunction() { ExportToExcel::exportToExcel(); } } Class ExportToExcel { public static function exportToExcel() { $DB = DB::Open(); //Open the database $csv_terminated = "\n"; $csv_separator = ","; $csv_enclosed = '"'; $csv_escaped = "\\"; $sql_query = "The Query goes here..."; $result = $DB->qry($sql_query, 2, TRUE); //Run the query $fields_cnt = 0; $schema_insert = ''; while ($finfo = mysqli_fetch_field($result)) { $fields_cnt++; $l = $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, stripslashes($finfo->name)) . $csv_enclosed; $schema_insert .= $l; $schema_insert .= $csv_separator; } $out = trim(substr($schema_insert, 0, -1)); $out .= $csv_terminated; while ($row = mysqli_fetch_array($result)) { $schema_insert = ''; for ($j = 0; $j < $fields_cnt; $j++) { if ($row[$j] == '0' || $row[$j] != '') { if ($csv_enclosed == '') $schema_insert .= $row[$j]; else { $schema_insert .= $csv_enclosed . str_replace($csv_enclosed, $csv_escaped . $csv_enclosed, $row[$j]) . $csv_enclosed; } } else $schema_insert .= ''; if ($j < $fields_cnt - 1) $schema_insert .= $csv_separator; } $out .= $schema_insert; $out .= $csv_terminated; } header("Cache-Control: must-revalidate, post-check=0, pre-check=0"); //--> WARNING header("Content-Length: " . strlen($out)); //--> WARNING header("Content-type: text/x-csv"); //--> WARNING header("Content-Disposition: attachment; filename=somefile.csv"); //--> WARNING echo $out; exit; } } 

Но он возвращает ошибку:

 Warning: Cannot modify header information - headers already sent by (output started at 'files' on line XX 

Когда я запускаю код напрямую без каких-либо классов и функций, он работает. Я попытался проверить список заголовков с помощью var_dump(headers_list()) и у меня есть:

 array(5) { [0]=> string(23) "X-Powered-By: PHP/5.4.4" [1]=> string(38) "Expires: Thu, 19 Nov 1981 08:52:00 GMT" [2]=> string(77) "Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0" [3]=> string(16) "Pragma: no-cache" [4]=> string(23) "Content-type: text/html" } 

Я попытался удалить заголовок, используя header_remove(); но это было то же самое. Как решить проблему? Благодаря…

Related of "Невозможно изменить информацию заголовка о статической функции"