.

خطاهای رایج در php

8 تا از خطا های رایج در php و راه های رفع آن ها

تهیه شده توسط رضا گلچین

محمدرضا گلچین | کارشناس سئو و دیجیتال مارکتینگ در شرکت تابان شهر

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

خطا های رایج در php

خطا های رایج در php

تقریبا اگر به کل پروژه ها هم نگاه کنیم در آخر می توان گفت به 8 تا از خطا های رایج در php می رسیم که خیلی از برنامه نویسان با آن ها درگیر هستند. این موارد خیلی ممکن است در طراحی سایت با php پیش بیاید. معمولا در طراحی سایت با php برنامه نویسان با چالش های بزرگی مواجه هستند که حل کردن آن ها یا خیلی زمان بر است یا آنقدر نکات ریزی دارد که ممکن است کار را برای آن ها سخت کند. اما خب همان طور که اجتمالا می دانید طراحی سایت با php چیزی نیست که بشود به راحتی از کنار آن گذر کرد و php یکی از مهمترین زبان های سمت سرور در طراحی سایت به حساب می آید و خیلی از توسعه دهندگان سایت، به هر طریقی با آن درگیر هستند.

حال در این مقاله ما “ارور های رایج در php” را برای شما بیان کرده ایم و سعی کردیم یک روش برای حل آن ها ارائه بدهیم تا شاید بتوانیم در این راه سخت و دشوار به شما کمکی کرده باشیم. در نظر داشته باشید که خطا های رایج در php ممکن است به همین موارد ختم نشوند. اما این ارور ها که ما برای شما شرح می دهیم از بیش از 1000 پروژه برنامه نویسی php استخراج شده است که همین عدد نشان دهنده حساسیت موضوع می باشد. در جدول زیر هم می توانید رایج ترین خطا های php را مشاهده کنید و سپس قرار است بدون معطلی و حرف اضافی به سراغ این خطا ها برویم و راه رفع آن ها را نیز برای شما شرح دهیم.

ارور های رایج در php

خطای
PHP Parse error: syntax error, unexpected end of file

این ارور زمانی بوجود می آید که کدی که یک خطای سینتاکسی دارد اجرا می شود. ارور های سینتاکسی نیازی نیست که خیلی بزرگ و پیچیده باشند. این ارور ها به شکل عجیبی می توانند به همین شکل زیر هم باشند.

$test =“test”

در اینجاست که کد به شما عبارت PHP Parse error: syntax error, unexpected end of file را نشان خواهد داد که مشکل آن فقط این است که یک سمیکولون (;) کد شما کم دارد و آن را باید به آن اضافه کنید به شکل زیر:

$test =“test”;

 خطای

E_Warning: Invalid argument supplied for foreach

یکی از خطاهای رایج در php این مورد می باشد که وقتی PHP 4 معرفی شد، PHP foreach یک روش ساده برای تکرار کردن صف ها و آبجکت های تکرار شدنی ارائه داد. برای مثال هم می توان اجرای عملکرد \Traversable را نام برد. حال اگر شما بخواهید این روش را روی یک متغیر که نوع داده آن فرق دارد یا یک متغیر بدون تکرار اولیه امتحان کنید، اینجاست که با این نوع خطایی که گفتیم مواجه خواهید شد.

$y_exceptions = null;

foreach($y_exceptions as $thisException) {

 

}

کد بالا یک همراه با یک هشدار و عبارت Invalid argument supplied for foreach() نمایش داده می شود به این خاطر که عبارت $y_exceptions یک صف نیست و عملکرد ArreyAccess، \Traversable یا هر عملکر تکرار شونده دیگری را اجرا نمی کند. پس باید در این کد تجدید نظر شود.

خطای
QueryException: SQLSTATE[23000]: Integrity constraint violation

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

CREATE TABLE testtable(

    user_name varchar(255) NOT NULL  PRIMARY KEY,

    password varchar(255)

);

$user_name=”test”;

$data=array(‘user_name’=>$user_name);

DB::table(‘testtable’)->insert($data);

$data=array(‘user_name’=>$user_name);

DB::table(‘testtable’)->insert($data);

در مثال بالا testable یک ستون user_name با کد اصلی محدود دارد و این موضوع به این خاطر پیش می آید که ما در حال قرار دادن یک ارزش duplicate در ستون user_name هستیم که این کار نباید انجام بشود.

خطای
QueryException: SQLSTATE[42s22]: Column not found

این خطا از خطا های رایج در php زمانی بوجود می آید که شما می خواهید بر روی یک ستون تعریف نشده عملیاتی انجام دهید. مانند مثال زیر:

$user_name=”test”;

$data=array(‘user_name’=>$user_name,’password’=>$password);

DB::table(‘testtable’)->insert($data);

اینجاست که به شما ارور Column not found نمایش داده خواهد شد به این خاطر که شما دارید تلاش می کنید که یک value در ستون testable’s password قرار دهید که اصلا وجود ندارد.

خطای
GuzzleHttp\Exception\ ClientException error

Guzzle یکی از کتاب خانه های php است که به شما اجازه می دهد برای کلاینت های HTTP ارسال درخواست های HTTP را فراهم کنید و که در وب سرویس های مختلف مورد استفاده قرار می گیرد. پس یکی از خطا های رایج در php این است که اگر ارور در هنگام انتقال اتفاق بیفتد، عبارت GuzzleHttp\Exception\ ClientException error را برای شما نمایش می دهد که کاری برای HTTP 400 errors انجام دهید البته اگر درخواست http_errors روی حالت true باشد.

این ارور ممکن است از حالت BadResponseExeption و GuzzleHttp\Exception\ BadResponseExeption هم تغییر کند که مانند حالت زیر می باشد:

$client = new \GuzzleHttp\Client();

$res = $client->request(‘GET’, ‘https://httpbin.org/status/404’);

این مثال ارور Client error: GET https://httpbin.org/status/404 را به شما نشان می دهد که یک صفحه 404 را جلوی شما قرار می دهد.

با استفاده از کچ بلاک به شکل زیر شما می توانید این ارور را از بین ببرید.

try {

    $client->request(‘GET’, ‘https://httpbin.org/status/404’);

} catch (ClientException $e) {

    echo Psr7\str($e->getRequest());

    echo Psr7\str($e->getResponse());

}

خطای GuzzleHttp\Exception\ ServerException error

از خطا های رایج در php یک خطای دیگر مربوط به کتاب خانه Guzzle وجود دارد. وقتی که HTTP 500 errors پیش می آیند یک ServerException دیگر هم اگر http_errors روی true باشد نمایش داده می شود:

$client = new \GuzzleHttp\Client();

$res = $client->request(‘GET’, ‘https://httpbin.org/status/503’);

ریشه این مشکل ممکن است دلایل زیر باشد:

-فرمت درخواستی شما به طور موقت در دسترس نیست.

-سرور شما از سروری که می خواهید به آن دسترسی پیدا کنید ارور دریافت می کند.

-پروتکل HTTP ای که شما درخواست می کنید پشتیبانی نشده است

برای رفع این مشکل شما می توانید مانند زیر از try/catch block استفاده کنید:

try {

    $client->request(‘GET’, ‘https://httpbin.org/status/503’);

} catch (ServerException $e) {

    echo Psr7\str($e->getRequest());

    echo Psr7\str($e->getResponse());

}

خطای QueryException: SQLSTATE[42s02]: Base table or view not found

این مشکل زمانی پیش می آید که کدی که می خواهید بر روی تیبل پایگاه داده اعمال کنید وجود ندارد یا به دلایلی نمی توان آن را پیدا کرد. مانند مثال زیر:

$user_name=”test”;

$data=array(‘user_name’=>$user_name);

DB::table(‘testtable’)->insert($data);

 

این مشکل به این دلیل بوجود می آید که شما دارید تلاش می کنید داده ای را در جدول یا تیبل قرار دهید که در پایگاه داده شما وجود ندارد. اول از همه مطمئن شوید که جدول وجود دارد تا با این ارور ها مواجه نشوید. به جای کد بالا هم می توانید try/catch block مانند مورد زیر استفاده کنید تا مشکل رفع بشود.

$user_name=”test”;

$data=array(‘user_name’=>$user_name);

try {

  DB::table(‘testtable’)->insert($data);

} catch (QueryException $e) {

  printf (“Error occurred: %s\n”, $e->getMessage());

}

خطای PDOException: SQLSTATE[HY000] [2002] Connection refused

این خطای PDOExceptions از خطا های رایج در php زمانی بوجود می آید که php شما به این صورت تعریف می شود که ” یک عملکرد سبک و مداوم می خواهد به پایگاه داده php شما دسترسی پیدا کند.

با انجام این سه مورد ممکن است بتوانید این ارور را رفع و رجوع کنید:

-شما ممکن است دسترسی کامل و مناسبی به پایگاه داده برای اجرای این عملیات ها نداشته باشید که این دسترسی باید ایجاد شود.

-پارامتر های پایگاه داده شما مانند نام سرور/هاست، شماره پورت، یوزرنیم، پسوورد و یا اسم پایگاه داده، اشتباه می باشد و باید آن ها را درست کنید.

-ممکن است سروری که پایگاه داده شما در آن است در دسترس نباشد که در این صورت باید دسترسی ایجاد بشود.

نتیجه گیری

خطا های رایج در php به همین مواردی که نام بردیم ختم نمی شود و ممکن است همیشه خطا هایی وجود داشته باشد که شما با آن ها در هنگام کار با php مواجه شوید. اما باید این موضوع را در نظر داشته باشید که جامعه برنامه نویسانی که از PHP استفاده می کنند بسیار بزرگ است و هر زمان که بخواهید می توانید از طریق وب یا مشاوره حضوری، با برنامه نویسان مختلف درباره ارور هایی که با آن ها مواجه می شوید صحبت کنید و برای رفع آن ها بکوشید. خطا های رایج در php که ما در این مقاله درباره آن ها صحبت کردیم جزو موارد عمومی تر به حساب می آیند که در پروژه های مختلف خیلی ها با آن ها مواجه شده اند. اگر شما هم با مشکلی در این زمینه رو به رو شدید با ما به اشتراک بگذارید.

منبع:

Rollbar

شاید دوست داشته باشید بدانید

نظرات شما عزیزان…

0 Comments

ارسال نظر

نشانی ایمیل شما منتشر نخواهد شد.