PDA

View Full Version : سوال: تناقض بین لوکال و هاست



hassanzanjani1374
چهارشنبه 09 فروردین 1391, 12:39 عصر
سلام . وقتتون بخیر
من یه اسکریپت رو لوکال هاست نوشتم . وقتی منتقل کردم رو هاست یک سری چیز ها رو ارور میده مثل :



header( 'Location: index.php' ) ;

یا




session_start();

ارور ها هم ایناست :



Warning: session_start() [function.session-start]: Cannot send session cache limiter - headers already sent (output started at /home/hztir/public_html/project/login.php:12) in /home/hztir/public_html/project/login.php on line 28

Warning: Cannot modify header information - headers already sent by (output started at /home/hztir/public_html/project/login.php:12) in /home/hztir/public_html/project/login.php on line 32



دلیلش چیه ؟ ممنون میشم کمکم کنید

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 13:42 عصر
دوستان لطفا کمک کنید قضیه خیلی حیاتی هست . این ها چیزای ساده ای هستن . چرا ارور میده ؟
در ضمن هاست ماله سرور پارس هست .

lordofphp
چهارشنبه 09 فروردین 1391, 14:01 عصر
بسمِ اللّه‏ِ الرَّحمنِ الرَّحیمِ

باعرض سلام و صلوات و درود

شاید تو نسخه php مشکلی پیش اومده با چه نسخه پی اچ پی نوشتید و نسخه پی اچ پی میزبان چیه؟

درپناه حق

حدانگهدار

hamed-php
چهارشنبه 09 فروردین 1391, 14:59 عصر
کد هاتون رو بگذارید تا کمک کنند دوستان
بدون فضای خالی ابتدا سیژن رو استارت کنید
UTF-8 without BOM هم چک کنید

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 17:08 عصر
ورژن پی اچ پی سرور 5.2.17 هست .
به این قسمت های کد گیر میده . به هدرش :


if (!isset($id) or $id == '')
{
header ('location: index.php');
}

و این سشن


session_start();

اینها دقیقا تیکه کد هایی هست که من استفاده کردم .

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 17:11 عصر
یه چیز ساده تر . حتی به خط 2 و 4 این پیج هم گیر میده .

<?php
session_start();
session_unset();
header("Location: ../index.php");
?>

Reza1607
چهارشنبه 09 فروردین 1391, 17:15 عصر
در اين مورد تا دلتون بخواد بحث شده قبلش يك سرچ مي كرديد سريع تر به جواب مي رسيديد

شما كارهاي زير رو انجام بدين
1) صفحه ها رو با utf-8 without bom ذخيره كنيد
2) session_start رو قبل از تمامي دستورات بنويسيد(چه html و چه php)
3) اگر اين كار ها رو كردين و نشد از دستور هاي ob_start() و ob_end_flush() استفاده كنيد به اين صورت كه دستور ob_start() قبل از تمامي دستورات و دستور ob_end_flush در آخرين خط از برنامه قرار داشته باشه

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 17:18 عصر
ممنون از پاسختون ولی من سشن رو اول صفحه استارت کردم باز ارور داد .
<?php
session_start();
session_unset();
header("Location: ../index.php");
?>

کل صفحه همین 4 خط هست برای لاگ اوت .
لطفات یکم بیشتر راجب این دستور اوبی توضیح بدین ممنون میشم .

Reza1607
چهارشنبه 09 فروردین 1391, 17:21 عصر
اين دستور مياد اطلاعات شما رو بافر مي كنه و بعد از اين كه كار پردازش صفحه تموم شد اون رو به يكباره به مرورگر مي فرسته
اطلاعات بيشتر
http://ir.php.net/manual/en/function.ob-start.php

شما صفحات رو به صورت utf-8 without bom ذخيره كردين ( با notepad++)

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 17:30 عصر
با نت پد ++ باز کردم صفحات رو همشون این تیک رو خورده بودند .
این کد رو هم اضافه کردم ولی بازم درست نشد !! :گریه:
فایل پیج رو اتچ کردم .

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 17:51 عصر
من نمی فهمم چرا باید روی لوکال (ومپ سرور) درست بیاد بالا ولی روی هاست ارور بده ؟!

MMSHFE
چهارشنبه 09 فروردین 1391, 18:05 عصر
با سلام، چون روی لوکال بطور پیشفرض Output Buffering فعاله ولی توی هاست همیشه اینطور نیست و باید خودتون فعالش کنید.
کد شما:


<?php
ob_start();
session_start();
session_unset();
header('Location: ../index.php');
ob_end_flush();
?>

توی ++Notepad برای اینکه فایلتون با کدگذاری UTF-8 without BOM ذخیره بشه، بعد از بازکردن فایل، ابتدا تمام متن رو با Ctrl+A انتخاب و با Ctrl+X اون رو Cut کنید. بعد از منوی Encoding گزینه Encode in UTF-8 without BOM رو انتخاب کنید و بعد، کلیدهای Ctrl+V رو فشارداده و نهایتاً فایل رو با Ctrl+S ذخیره کنید.
نکته: فایل شما با کدگذاری UTF-8 معمولی (همراه با Byte Order Mark) ذخیره شده بود.
موفق باشید.

hamed-php
چهارشنبه 09 فروردین 1391, 18:11 عصر
این رو در لوکال تست کردم ok بود


ob_start();
session_start();
session_unset();
header("Location: ../index.php");
ob_end_clean();

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 18:18 عصر
ممنون از همتون با راه حل جناب MMSHFE مشکل برطرف شد . بازم ممنون از همه

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 18:22 عصر
اگر بخوام روی هاست درست باشه بدون استفاده از اوبی باید به میزبان بگم Output Buffering رو فعال کنه ؟

MMSHFE
چهارشنبه 09 فروردین 1391, 18:39 عصر
بله باید از پشتیبانی درخواست کنید بافر خروجی رو فعال کنه. موفق باشید.

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 18:53 عصر
خیلی خیلی خیلی ممنون . واقعا نا امید شده بودم . :قلب:

djsaeedkhan
چهارشنبه 09 فروردین 1391, 19:53 عصر
در هنگام شروع برای کد نویسی این تکه کد رو هم قرار بدید تا تمام خطا های ساده رو هم بگیره
اینجوری اگر خطایی رخ نداد صد در صد روی هاست هم رخ نخواهد داد

error_reporting(E_ALL);//E_ALL

hassanzanjani1374
چهارشنبه 09 فروردین 1391, 21:45 عصر
حالا اون مشکل حل شد . این ارور رو میده


Warning: session_start() [function.session-start]:
open(/var/sessions/sess_c284075b03818caab2b2bdc87dc3b675, O_RDWR) failed: No such file or directory (2) in /project/login.php on line 28

به این گیر میده .

session_start();


تنظیم چی رو باید درست کنم ؟

djsaeedkhan
چهارشنبه 09 فروردین 1391, 23:41 عصر
سلام
احتمالا شما در اون صفحه استارت سشن رو به غیر از خط اول نوشتی یا اینکه اینکلود کردی و در فایل اینکلود شده سشن استارت نوشتی

hassanzanjani1374
پنج شنبه 10 فروردین 1391, 07:46 صبح
حتما باید اول صفحه باشه ؟

hassanzanjani1374
پنج شنبه 10 فروردین 1391, 07:49 صبح
جابجا کردم ولی درست نشد . الان تو یه صفحه این ارور ها رو میده :

Warning: session_start() [function.session-start]: open(/var/sessions/sess_34da03183f886f5ef0b6af7e1b626500, O_RDWR) failed: No such file or directory (2) in /project/login.php on line 2
و
Warning: Unknown: open(/var/sessions/sess_34da03183f886f5ef0b6af7e1b626500, O_RDWR) failed: No such file or directory (2) in Unknown on line 0
و
Warning: Unknown: Failed to write session data (files). Please verify that the current setting of session.save_path is correct (/var/sessions) in Unknown on line 0

اول صفحه هم کدش اینجوری شد :
<?php
session_start();
?>

MMSHFE
پنج شنبه 10 فروردین 1391, 09:43 صبح
یک پوشه session_temp بالاتر از public_html توی هاست خودتون بسازید و توی فایلهاتون قبل از session_start این کد رو بنویسید:

@session_save_path($_SERVER['DOCUMENT_ROOT'].'../session_temp');
اینطوری، فایلهای Session شما توی اون پوشه ایجاد میشه. احتمالاً تنظیمات دسترسی پوشه var/sessions/ هاستتون بخاطر کانفیگ نامناسب سرور، دچار مشکل شده. موفق باشید.

hassanzanjani1374
پنج شنبه 10 فروردین 1391, 10:41 صبح
این فایل کانفیگ سرور رو اتچ کردم . میشه از طریق این درستش کرد ؟

Reza1607
پنج شنبه 10 فروردین 1391, 10:56 صبح
شما پوشه اي با اين مسير داريد
var/session
اگه نداريد ايجادش كنيد
و اگه هم داريد دسترسي خوندن و نوشتن بهش بدين

و درمورد فايلي كه اتچ كرد
اين خط رو
session.save_path = /var/sessions
به اين صورت بنويسيد
session.save_path = "/var/sessions"
اگه درست نشد يك مسير ديگه رو جلوي
session.save_path
بنويسيد

(البته بعد از هر تغيير آپاچي رو ريست كنيد )

hassanzanjani1374
پنج شنبه 10 فروردین 1391, 13:15 عصر
میشه فایل رو ویرایش کنید بهم بدید ؟

hassanzanjani1374
جمعه 11 فروردین 1391, 12:28 عصر
این پوشه var/session رو کجا ایجاد کنم ؟ تو پابایک یه فولدر به نام var بسازم بعد توش دوباره یکی به نام session ؟