گیک فارسی

نوشته های یک گیک فارسی از فعالیت ها ،‌ علاقه مندی ها و نقد هایش

نمایش صفحه سفید ،‌ کار نکردن کد روی سرور و از این دست مشکلات در PHP

نویسنده:
13 می 16

یکی از سؤالاتی که بارها مخصوصاً توسط تازه کار‌های PHP پرسیده میشه این هست که برنامه یا سایت روی سیستم خودمون به صورت Local درست کار میکنه اما وقتی به Server و سایت اصلی منتقلش میکنیم به مشکل میخوریم.

کدنویس عصبانی

عموما مشکل این هست که با یک صفحه سفید روبرو می‌شویم ، برنامه رفتار عجیب از خودش نشون میده ، بخشی از برنامه اجرا نمیشه یا کلاً هیچ اتفاقی نمیفته و جالب اینجاست که چون فکر میکنن مشکل از کدهاشون نیست هیچ کدی را هم جهت بررسی توی سوالشون قرار نمی‌دهند.

مشکل این دوستان در مرحله اول این هست که در‌ واقع تفاوت‌های کوچک و بزرگی بین سیستم عامل خودشون که عموما ویندوز هست (و من توصیه میکنم اگه میخوان برنامه نویسی وب و PHP را جدی پیگیری کنند به فکر مهاجرت به لینوکس باشند) و سیستم عامل میزبان که عموما لینوکس هست وجود داره یا از کتابخونه و نسخه‌ای از PHP استفاده میکنند که با Server سایتشون متفاوت هست و به همین علت برنامه خطا میده.

بر روی Server از طریق کانفیگ PHP به صورت پیش‌ فرض مانع از نمایش خطا ها به کاربر می‌شوند که کاملاً درسته و شما خودتون باید نمایش خطا‌ها را دستی فعال کنید. برای این کار این دو خط را در ابتدای کدهای PHP خودتون قرار بدین :

error_reporting(E_ALL);
ini_set('display_errors','1');

این دو خط از مفسر PHP میخواد که همه انواع خطاها را گزارش کنه و در صورت بروز خطا آن‌ها را در خود صفحه نمایش بده. اگه بخواهیم اصولی‌تر گزارش خطاها را کنترل کنیم بهتره از htaccess. استفاده کنیم و این چند خط را داخلش بنویسیم :

php_flag display_startup_errors on
php_flag display_errors on
php_value error_reporting 32767

اما اگه سایت در حال نمایش به عموم باشه. نمایش خطاهای احتمالی به بازدیدکنندگان ریسک امنیتی داره و میتونه باعث سوء‌ استفاده و در نهایت هم هک شدن سایت بشه. پس بهتره بجای نمایش خطاها در صفحات ، اونها را به یک فایل log منتقل کنیم:

php_flag  log_errors on
php_value error_reporting 32767
php_value error_log  /full/path/to/log/file.log

حالا کافیه سایت را دوباره چک کنیم و این بار قطعاً خطاهای احتمالی را متوجه میشیم و میتونیم رفعشون کنیم.