سرفصل مطالب
صفحات سفید خالی یا خطای 500 سرور داخلی
صفحات سفید خالی یک خطا PHP هستند که به دلایلی پیام های خطا را نمایش نمی دهد و دلیل عدم نمایش خطا این است که سرور شما برای نمایش خطاها تنظیم نشده است.
به قسمت پنل مدیریت>> سیستم>> تنظیمات>> ویرایش فروشگاه >> تب سرور بروید و در انتهای جایی که “مدیریت خطاها” را مشاهده می کنید، “بله” را برای “نمایش خطاها” انتخاب کنید.
اگر باز هم خطا را مشاهده نکردید، فایل php.ini را باز کنید و کد زیر را اضافه کنید:
display_errors = 1; error_reporting = E_ALL; log_errors = 1 ;
اگر باز هم خطا را مشاهده نکردید، فایل index.php را باز کنید و کد زیر را اضافه کنید (خط 2):
ini_set('display_errors', 1); ini_set('log_errors', 1); error_reporting (E_ALL);
همچنان خطا را مشاهده نمی کنید، سپس “سطح فشرده سازی فایل های خروجی” خود را در تب سیستم> تنظیمات> سرور روی 0 تنظیم کنید.
اگر خطا را مشاهده کردید، مشکلات را حل کنید، اما اگر خطاها را مشاهده نکردید، به احتمال زیاد خطای سرور است.
همچنین اگر آن را فعال کرده باشید، می توانید گزارش خطاها را در فایل error.log مشاهده کنید.
عمدتا این خطا با راه حل های بالا برطرف می شود و خطای سرور داخلی 500 را نیز می توان با رویکردی مشابه حل کرد.
Variable / Index (متغیر) تعریف نشده
یک متغیر تعریف نشده (undefined variable) در سورس کد برنامه، متغیری است که در کد به آن ارجاع داده میشود اما قبلا در آن کد تعریف نشده است. بنابراین از “()isset” برای بررسی اینکه آیا متغیر تنظیم شده و مشکل را حل می کند استفاده کنید.
نوع خطا:
Notice: Undefined index: filter in /Applications/XAMPP/xamppfiles/htdocs/opencart303/catalog/controller/product/category.php on line
راه حل
//$filter = $this->request->get['filter']; if (isset($this->request->get['filter'])) { $filter = $this->request->get['filter']; } else { $filter = ''; }
بررسی کنید
$filter = $this->request->get['filter'];
و بررسی با isset یکی از راه حل های آن است.
اگر هنگام نصب ماژول ها یا افزونه ها با مشکل مواجه شدید، باید کد را بررسی کنید یا با توسعه دهنده تماس بگیرید تا مشکل را برای شما برطرف سازد.
توابع/ متدهای تعریف نشده
خطاهای تعریف نشده تابع/ متد زمانی دیده می شود که آن تابع یا متد را فراخوانی می کنید ولی تعریف نشده و یافت نمی شوند. IE_ERROR: یک خطای Fatal که باعث خاتمه اسکریپت می شود “Fatal error: Call to undefined function” یا “Fatal error: Call to undefined method”. اگر فایل ها پیدا نشوند یا پسوندها با نسخه اپن کارت شما سازگار نباشند، این اتفاق می افتد. راه حل ها می تواند در زیر باشد:
نوع خطا: مربوط به فایل های اصلی اپن کارت
- Fatal error: Uncaught Error: Call to undefined method DB\MySQLi::query()
- Fatal error: Uncaught Error: Call to undefined method Cart\Cart::getProducts()
- Fatal error: Uncaught Error: Call to undefined method ControllerAccountLogin::validate() in …/catalog/controller/account/login.php:54
به فایل بروید و بررسی کنید که آیا فانکشن ها یا متدها تعریف شده اند یا خیر.
هدر از قبل ارسال شده /Headers Already Sent
نوع خطا:
Warning: Cannot modify header information – headers already sent by (output started at /public_html/config.php:31) in /path/public_html/index.php on line.
راه حل:
فاصله های ابتدا و انتهای فایل ذکر شده را حذف کنید. مانند خطای بالا با config.php بررسی کنید.
خطاهای نشست (Session)
از ادمین درخواست می شود به سیستم وارد شود و پیام “Invalid token session. Please login again” دریافت می شود
نوع خطا:
Warning: session_start () [function.session-start]: open (/tmp/…, O_RDWR) failed: No such file or directory (2) in /path/public_html/system /library /session.php on line
راه حل:
هیچ مشکلی برای فایل یا دایرکتوری وجود ندارد
php.ini را باز کنید و کد زیر را اضافه کنید:
session.save_path = /tmp;
اگر راه حل بالا جواب نداد، با پشتیبانی هاست خود تماس بگیرید و از آنها بپرسید که چگونه میتوانید session.save_path را تنظیم کنید.
اندازه حافظه مجاز تمام شده است
این خطا به این دلیل رخ می دهد که حافظه هاست شما برای اجرای کد PHP کافی نیست (آپلود کردن تصویر بزرگ، پرشدن سطل زباله در اثر حذف بسیاری از محصولات، ارسال ایمیل های انبوه و غیره). افزایش حافظه اختصاص داده شده برای PHP مشکل را حل می کند.
نوع خطا:
Fatal error: the Allowed memory size of 1111 bytes exhausted (tried to allocate 1111 bytes) in /path/public_html/system/library/image.php on line
راه حل:
php.ini را ویرایش کنید و memory_limit = 128M را تنظیم کنید.
یا کد زیر را برای htaccess php_value memory_limit 128M. قرار دهید
اگر موارد فوق جواب نداد، با پشتیبانی هاست تماس بگیرید و از آنها بخواهید حجم اختصاص داده شده برای PHP را افزایش دهند.
هشدار:
Warning: Use of undefined constant DIR_STORAGE – assumed ‘DIR_STORAGE’ (this will throw an Error in a future version of PHP) in …/config.php on line
برخی از خطاهای دیگری که می توانید با آنها رو به رو شوید به شرح زیر است:
Error: Calls to magic methods are not allowed!
// Stop any magical methods being called if (substr($this->method, 0, 2) == '__') { return new \Exception('Error: Calls to magic methods are not allowed!'); }
Error: Could not call product/category
// Initialize the class if (is_file($file)) { include_once($file); $controller = new $class($registry); } else { return new \Exception('Error: Could not call ' . $this->route . '/' . $this->method . '!'); }
Error: Could not load model
if (!$this->registry->has('model_' . str_replace('/', '_', $route))) { $file = DIR_APPLICATION . 'model/' . $route . '.php'; $class = 'Model' . preg_replace('/[^a-zA-Z0-9]/', '', $route); if (is_file($file)) { include_once($file); $proxy = new Proxy(); // Overriding models is a little harder so we have to use // PHP's magic methods // In future version we can use runkit foreach (get_class_methods($class) as $method) { $proxy->{$method} = $this->callback($this->registry, $route . '/' . $method); } $this->registry->set('model_' . str_replace('/', '_', (string)$route), $proxy); } else { throw new \Exception('Error: Could not load model ' . $route . '!'); } }
Error: Could not load library
Error: Could not load helper
Error: Could not load cache adaptor Memcache/Redis/APC cache!
$class = 'Cache\\' . $adaptor; if (class_exists($class)) { $this->adaptor = new $class($expire); } else { throw new \Exception('Error: Could not load cache adaptor ' . $adaptor . ' cache!'); }
Error: Could not load database adaptor mpdo/mssql/mysql/mysqli/postgre !
$class = 'DB\\' . $adaptor; if (class_exists($class)) { $this->adaptor = new $class($hostname, $username, $password, $database, $port); } else { throw new \Exception('Error: Could not load database adaptor ' . $adaptor . '!'); }
Error: Could not make a database connection using this username and password
Error: Could not connect to database opencart
Error: PHP GD is not installed!
if (!extension_loaded('gd')) { exit('Error: PHP GD is not installed!'); }
Error: Could not load image filename!
Error: Invalid session ID!
Warning: Install folder still exists and should be deleted for security reasons!
افزونه بد نصب شده، دکمه به روز رسانی را در تغییرات و اصلاحات زده شده و پنل مدیریت و سایت از دسترس خارج شده است
افزونه را از پایگاه داده حذف کنید، سپس config.php را باز کنید و مقدار تعریف شده برای ذخیره سازی را پیدا کنید. به پوشه Storage/ بروید، سپس به modification بروید و پوشه ها را حذف کنید، به طور مشابه به پوشه upload/ بروید و ببینید اگر پوشه هایی وجود دارد، آنها را نیز حذف کنید. با این کار فایل ها و پوشه های کش شده را حذف می کند. سپس، می توانید دوباره به ادمین خود دسترسی داشته باشید.
خطای Fatal error uncaught exception
Fatal error: Uncaught Exception: Error: Table ‘….oc_session’ doesn’t exist in engine<br />Error No: 1932<br />SELECT `data` FROM `oc_session` WHERE session_id = ‘….’ AND expire > 1548638620 in …/system/library/db/mysqli.php:40 Stack trace: #0 …/system/library/db.php(45): DB\MySQLi->query(‘SELECT `data` F…’) #1
ایجاد جدول پایگاه داده، بسیاری از این نوع خطاها را حل خواهد کرد
Fatal error: Uncaught Exception: Error: Could not load database adaptor DB_DRIVER!
پوشه system/library/DB را بررسی کنید که آیا فایل درایور مورد نیاز وجود دارد یا خیر.
خطاهای اپن کارت: سخن آخر
امیدوارم این توضیحات مشکلات و خطاهای اپن کارت که ممکن است گاها با آن مواجه شوید را حل کند، چنانچه مشکل جدیدی پیدا کردید به ما اطلاع دهید، سعی می کنیم راه حل های آن را ارائه دهیم.
** چنانچه با خطاهای اپن کارت رو به رو شدید می توانید با شرکت مهندسی داده پردازان سپنتامهر تماس بگیرید**