مباشرة إلى هذه النقطة
هناك منتج خاص يساعدني بنجاح في تصحيح الأخطاء ويطلق عليه PhpDump .
في وقت واحد ، طلب مني CMS MODX كتابة مصحح الأخطاء الخاص بي. بالطبع هناك var_dump ، phpConsole ، xDebug في PHP. ولكن هنا أنا مع بلدي PhpDump .
سأقول إن الحل ليس مثاليًا ، لكنه عملي للغاية.
كم يعجبك الأمر متروك لك.
فيما يلي بعض لقطات كيفية ظهور هذا.


سأخبرك في المقالة عن كيفية تثبيته واستخدامه في CMS MODX Revo
المتطلبات
Apache + PHP 7، CMS MODX Revo 2.7
بوابة + الملحن
تحميل وتثبيت
إنشاء دليل ل PhpDump بشكل منفصل عن المشاريع الخاصة بك. حيث قد ترغب في استخدامه على خادم محلي في مشاريع مختلفة. للقيام بذلك ، ليس من الضروري تثبيته في كل مكان.
في الدليل ، قم بإنشاء ملف composer.json
بالبيانات التالية:
{ "require":{ "Alpa/PhpDump":"1.*" }, "repositories": [ { "type": "git", "url": "https://github.com/ALexeyP0708/PhpDump.git" }, { "type": "git", "url": "https://github.com/ALexeyP0708/EntityDetails" } ] }
في المحطة ، اكتب $ composer install
عند التثبيت من خلال الملحن ، سيتم وضع المشروع في [directory install]/vendor/PhpDump
- التثبيت عبر GIT
قيادة المحطة
$ git clone https://github.com/ALexeyP0708/PhpDump.git
أو قم بفك ضغط أرشيف الرمز البريدي.
يمكن تنزيلها هنا
تثبيت PhpDumpConsole
في Google Chrome ، انتقل إلى قسم الإضافات ، وقم بتشغيل وضع مطور البرامج (في الزاوية العلوية اليمنى) ، ثم
.
حدد الدليل [directory PhpDump]/ChromeExtension/PhpDumpConsole_v1.1
.
سيظهر رمز التقاطع الأحمر في اللوحة - ترس في دائرة. إذا لم يتحول لون الترس إلى اللون الأزرق عند النقر فوق ، فإن الخادم لا يدعم PhpDump أو لا يمرر العميل التفويض.
فحص الصحة
تحقق من الملف [dirictory Php Dump]/tests/test_debugManager.php
إذا تم تثبيتها من خلال الملحن ، فأنت بحاجة إلى تحديد المسار الصحيح لملف التحميل التلقائي.
للقيام بذلك ، استبدل الخط
include_once __DIR__.'/../vendor/autoload.php';
على
يجب أن يكون الدليل حيث تم تثبيت PhpDump الوصول إلى شبكة الإنترنت والتوجيه المجاني إلى البرامج النصية.
افترض أنك قمت بتعيين PhpDump على /sites/www/mysite/TestPhpDump
والوصول إلى موقع الويب http://mysite/
ثم لتشغيل البرنامج النصي للاختبار
http://mysite/TestPhpDump/tests/test_debugManager.php
ستبدأ الصفحة التي تحتوي على الأخطاء الناتجة. قم بتشغيل وحدة التحكم في Google Chrome وانقر فوق الترس في لوحة التطبيق. سيتم إعادة تحميل الصفحة ، وسوف يتحول الترس إلى اللون الأزرق. سيتم الآن عرض جميع المعلومات في وحدة التحكم.
كيف تعمل على مشروعك
في الجزء العلوي من الصفحة التي تدير البرنامج النصي لمشروعك ، يجب عليك تحديد:
include_once '[directory phpdump]/vendor/autoload.php';
تحتاج إلى فهم أن PhpDump يعمل في السيناريو حيث يتم الإعلان عن بيانات السلسلة.
يجب عليك أيضًا مراعاة حقيقة أن PHPdumpConsole يعرض تفريغًا ليس فقط للصفحة الرئيسية ، ولكن أيضًا لطلبات ajax والبرامج النصية الأمامية التي تم إنشاؤها بواسطة الخادم ديناميكيًا.
إذا وصل مشروعك بشكل عشوائي إلى سيناريوهات مختلفة (على سبيل المثال ، تم تحميل الصفحة من خلال Index.php ، وتم تقديم طلب ajax من خلال other.php أو قام المتصفح بتحميل برنامج نصي ديناميكي تم إنشاؤه من js من script.js.php) ، فقد تحدث مواقف غير متوقعة.
في هذه الحالة ، من الضروري أن تمر جميع التوجيهات بملف نصي واحد. على سبيل المثال ، عبر /index.php. أو قم بتطبيق حلول إضافية ، كما حدث مع MODX (الموضح أدناه).
إطلاق على موقع اختبار مع CMS MODX
هناك العديد من الحلول لتشغيل PhpDump على CMS MODX.
الحل الأول - وفقًا للتعليمات المذكورة أعلاه ، اكتب الرمز في ملف index.php لموقعك:
include_once '[directory phpdump]/vendor/autoload.php'; new PhpDump\InitDump();
في هذه الحالة ، ستعمل PhpDump في وضع التصحيح والتقاط الأخطاء.
ولكن كل ما سيظهر في سجلات MODX ، وكذلك الأخطاء التي يتم قمعها بواسطة النظام ،
لن يتم عرضها في PhpDumpConsole
الخيار الثاني: مسؤول - دون إجراء التخصيص. هذا امتداد لفئة ErrorHandler وإعداد المتغيرات المقابلة في معلمات MODX.
هذا الحل له عيب. إذا تم إدخال البيانات بشكل غير صحيح في الإعدادات ، فسيتعطل الموقع. ويمكن تصحيح الموقف فقط من خلال قاعدة البيانات.
لذلك ، تم حذف وصف هذا الخيار.
في هذا الخيار ، يمكنك رؤية كل أخطاء PHP التي تم إنشاؤها. لكنك لن ترى السجلات التي تم إنشاؤها ، والتي يظهر فيها جزء كبير من أخطاء MODX.
الخيار الثالث ، الذي كنت أتطرق إليه شخصيًا ، هو إعداد توجيه كامل لمكالمات البرامج النصية من خلال الملف "dev_route.php" ؛
باستخدام .htaccess ، يتم توجيه جميع المكالمات غير الثابتة إلى ملف dev_route.php.
تنبيه: حتى النهاية ، لم يتم التحقيق في السلوك. ربما توفر بعض التطبيقات منطقًا مختلفًا للطلبات إلى الموقع ، والتي لم يتم وصف مسارها في dev_route.php.
تنبيه :. htaccess لم يكتمل تماما. ليست كل الموارد الثابتة محددة فيها. لذلك ، سيتم معالجتها في dev_route.php
نقوم بعمل نسخة احتياطية من ملف .htaccess
القديم.
قم بإنشاء .htaccess
جديد في جذر دليل الموقع وأدخل الرمز:
# file .htaccess #---------------------------------------- # . - . RewriteCond %{REQUEST_URI} /manager/min/assets/.* RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} /manager/assets/.* RewriteCond %{REQUEST_FILENAME} !-f [OR] RewriteCond %{REQUEST_URI} /assets/.* RewriteCond %{REQUEST_FILENAME} !-f RewriteRule ^(.*)$ - [R=404,L] #--------------------------------------- #--------------------------------------- # RewriteCond %{REQUEST_URI} /manager/min/assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_URI} /manager/assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteCond %{REQUEST_URI} /assets/.* RewriteCond %{REQUEST_FILENAME} -f [OR] RewriteRule ^(.*)$ $1 [L] #--------------------------------------- #--------------------------------------- # c . RewriteCond %{REQUEST_FILENAME} .*\.js$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.html$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.css$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.gif$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.jpg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.jpeg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.png$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.svg$ [OR] RewriteCond %{REQUEST_FILENAME} .*\.woff$ RewriteRule ^(.*)$ $1 [L] #--------------------------------------- #--------------------------------------- # . RewriteCond %{REQUEST_URI} /manager(?:|/.*) RewriteRule ^(.*)$ dev_route.php [L] RewriteCond %{REQUEST_URI} /connectors(?:|/.*) RewriteRule ^(.*)$ dev_route.php [L] #--------------------------------------- #--------------------------------------- # . RewriteCond %{REQUEST_URI} .* RewriteRule ^(.*)$ dev_route.php?q=$1 [L,QSA] #---------------------------------------
نقوم بإنشاء ملف dev_route.php
في جذر دليل الموقع dev_route.php
الرمز فيه:
<?php include_once '[yor path php dump]/vendor/autoload.php';
بعد ذلك ، في الملف core\xpdo\xpdo.class.php
(لـ MODX revo 2.7) ، قم بتنسيق طريقة السجل كما يلي:
public function log($level, $msg, $target= '', $def= '', $file= '', $line= '') { \deb::print($msg."=>[$target][$def][$file][$line]",'LOG'); $this->_log($level, $msg, $target, $def, $file, $line); }
وهذا كل شيء. كل شيء يجب أن تعمل بشكل صحيح بالنسبة لك.
اختبار في لوحة الادارة. إذا تم تحميل لوحة الإدارة جيدًا ، فسيتم كل شيء كما يجب.
كيفية الاستخدام:
إعدادات الأمان
PhpDump غير مصمم حاليًا للعمل الاحترافي ، لذلك تكون الظروف الأمنية في حدها الأدنى.
إذا قررت إرفاق PhpDump إلى موقع موجود على الإنترنت ، فعندئذ في ملف [directory phpdump] /src/include_file_in_index.php ، قم بتغيير الإعدادات التالية للترخيص:
$settings=[ 'hashkeys'=>[ 'HashKey'=>[
من جانب العميل في وحدة التحكم ، في القائمة المنسدلة "سياق جافا سكريبت" ، حدد PhpDumpConsole وأدخل الرمز في وحدة التحكم
dm.setHashKey({ hashkey:'HashKey', greeting_server:'greeting_server', greeting_client:'greeting_client' }); // hashkey , greeting_server, greeting_client . dm.bindHashKeyDomain({hashkey:'HashKey',domain:'global'}); // domain:'your_domain' // domain='global' .
الكعك الأخرى
من خلال وحدة التحكم ، يمكنك التحكم في تشغيل / إيقاف backtrace ، تصفية الإخراج.
يمكنك العثور على كل هذا في الإرشادات الموجودة على صفحة جيثب
PhpDump يمكن استخدامها ليس فقط ل MODX ، ولكن أيضا في مشاريع أخرى. الشيء الرئيسي لمعرفة كيفية ربط.
ملاحظة: إذا كنت من محبي MODX ، فستجد قريبًا كعكات جديدة: طريقة لتشكيل الفجوات وقهر المقتطفات. يمكن للقصاصات المنطقية ومقتطفات القوالب التنظيم الذاتي والتجميع مع بعضها البعض ، وبالتالي ، يمكنك الجمع بين القصاصات 2x-3x لتوسيع السلوك.
هناك مرونة في كتابة المقتطفات. لن يحتاج المبرمجون إلى وصف الدورة الكاملة لكتابة مقتطف ، ولكن فقط جزء منفصل ، يصف API الخاصة به لمزيد من التفاعل مع المقتطفات الأخرى.
شكرا لكم جميعا