انجمن‌های فارس وب

نسخه کامل: رفع خطای Cannot modify header information - headers already sent by ... در PHP
شما در حال بازدید از بایگانی ارسال های انجمن هستید این نسخه کامل نیست : برای مشاهده نسخه کامل اینجا کلیک کنید
من در اجرای دستور header در سایت با مشکل برخوردم
Warning: Cannot modify header information - headers already sent by
برای آزمایش یه فایل فقط با یک خط دستور رو آپلود کردم (بصورت زیر)

<html>
<?
php
header
('Location: http://www.google.com/');
?>

ولی باز خطائی بالا تکرار میشه . لطفاً راهنمائی کنین .

نمی دونم با این یک خط چطوری اپلود رو انجام دادی ولی تا اونجایی که من می دونم :
توی فایل php نباید قبل از دستور Header هیچ کد html ی نوشته شده باشه.
حتی Enter هم نباید موجود باشه .
اين خطا يكي از شايع ترين خطاها در زبان PHP محسوب مي‌شه كه چندين دليل داره، فضا/خط/كد اضافي قبل و بعد از اعلان شروع و پايان دستورات PHP يعني<? php?>، نوع فرمت فايل، فرستادن اطلاعات سرآيند (header) ديگر قبل از header فعلي با اجرا شدن دستور ()header.

بنابراين دستور شما با حذف خط/كد/فضا اضافي مي‌بايست به صورت زير اصلاح بشه:

<?php
header
('Location: http://www.google.com/');
?>


در صورت بروز مجدد اين مشكل حتمالاً مشكل در فرمت فايل و UTF-8 بودنش هستش، با برنامه ++Notepad فايل php رو اجرا و از گزينه Format گزينه ي Encode in UTF-8 without BOM رو انتخاب كنيد تا مشكل حل شه.

در مورد فضاهاي اضافي نرم افزارهايي مانند winhex هستند كه توسط اونها اين فضاها قابل مشاهده و حذف هستش.

در صورتي كه باز هم اين مشكل وجود داره؛ در فايل php.ini تنظيم output_buffering رو از off به on تغيير بدين و روش ديگر اينكه اين دستور رو به صورت زير به كار بگيريد:

<?php
ob_start
();
header('Location: http://www.google.com/');
ob_end_flush();
?>


مراحل اوليه در فايل استانداردي كه پيوست كردم رعايت شده كه با استفاده از اون به هدف خودتون مي‌رسيد.
موفق باشيد.

مرجع آدرس ها