سؤال

لقد كنت أستخدم Eclipse-PDT بالتزامن مع XDebug و Apache دون مشاكل، لأكثر من عام واحد. عملت الأمور بلا عيوب ويمكنني القيام بكل تصحيح الأخطاء التفاعلية التي أردت من داخل الكسوف (باستخدام جهازي الخاص كخادم).

الآن قمت بتسجيله من Apache إلى Nginx (وبالتالي يعمل PHP الآن ليس كخدمة Apache ولكن بأسرع CGI) ولا يمكنني إيجاد طريقة لتكوين كسوف للعمل بشكل جيد مع XDebug. أنا غير متأكد من أن المشكلة مع XDebug أو مع الكسوف (أو كليهما) للتأكد.

في تكوين Eclipse، قمت بالفعل بتغيير المرجع إلى ملف تكوين PHP إلى /etc/php5/cli/php.ini.


محاولات مع PHP.INI الإصدار 1

كالآتي php.ini ملف

zend_extension=/usr/lib/php5/20060613/xdebug.so
  • أرى أن XDebug يعمل (على سبيل المثال إذا كنت أفعل var_dump() أحصل على نسخة Xdebug منه، وليس PHP One)
  • لا يمكنني الحصول على تصحيح الأخطاء التفاعلية من الكسوف: يفتح المستعرض ويحمل الصفحة تماما مع عنوان URL النموذجي الذي يحتوي عليه ...?XDEBUG_SESSION_START=ECLIPSE_DBGP&KEY=..., ، ولكن تنفيذ البرنامج لا يتوقف عند نقاط التوقف
  • في الركن الأيمن السفلي من الكسوف أرى رسالة مشبوهة: "إطلاق = put_the_name_of_my_project_here =: 57٪" التي تتناوب مع "مساحة عمل منعشة" واحد.

محاولات مع PHP.INI الإصدار 2

إذا كنت أستخدم هذا الإصدار الآخر من الملف (وهو ما يعمل حتى يتم تشغيله إلى Nginx):

zend_extension=/usr/lib/php5/20060613/xdebug.so
xdebug.remote_enable=On
xdebug.remote_autostart=On
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req

لا يمكنني الوصول إلى أي صفحة من مواقعي على الإطلاق.


ملاحظة: بيانات إضافية على جهازي: - نظام التشغيل: جنو / لينكس - أوبونتو 9.10 64 بت. - بي أتش بي: 5.2.10-2ubuntu6.3 مع Suhosin-Patch 0.9.7؛ Zend Engine V2.2.0، حقوق الطبع والنشر (ج) 1998-2009 Zend Technologies مع XDEBUG V2.0.4 - كسوف: انظر لقطة الشاشة.

alt text

هل كانت مفيدة؟

المحلول

ما قاله بو سا الصحيح (لا يمكن التصويت لأنني جديد!).

بشكل عام، إضاف إلى /etc/php5/cgi/php.ini (أو تحديد موقع php.ini)

zend_extension = /PATH_TO/xdebug.so   ## <-- NOTE the absolute path, not relational (For ex on Windows: "C:\nginx-1.9.13\php\ext\php_xdebug-2.6.0RC2-7.0-vc14-nts.dll")
xdebug.remote_enable = on
xdebug.remote_handler = dbgp
xdebug.remote_host = localhost
xdebug.remote_port = 9900        ## <-- Yours will be probly 9000 or other..

لا وظيفة.

لذلك بعد التغيير،

./php-fastcgi stop
./php-fastcgi start

هذا عملت بالنسبة لي.

نصائح أخرى

يستخدم Xdebug و Fastcgi نفس المنفذ الافتراضي (9000). تغيير ميناء XDebug في ملف php.ini الخاص بك مثل هذا:

xdebug.remote_port=9001

وتحديث إعدادات IDE لاستخدام 9001.

حاول إعادة تشغيل PHP الخاص بك. لأن لديك PHP-FastCGI، لا يبدو أن إعادة تشغيل Nginx تفعل ذلك. عندما أعد تشغيل الخادم بالكامل، حدث التغيير نافذ المفعول.

كان لدي نفس المشكلة وحلها.
في file. /etc/php5/apache2/php.ini يضيف:

[xdebug] xdebug.remote_enable=On
xdebug.remote_autostart=off
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req


في file. /etc/php5/cli/php.ini يضيف:

zend_extension=/usr/lib/php5/20060613/xdebug.so
xdebug.remote_enable=On
xdebug.remote_autostart=off
xdebug.remote_handler=dbgp
xdebug.remote_host=localhost
xdebug.remote_port=9000
xdebug.remote_mode=req


إعادة تشغيل Apache:

sudo service apache2 restart

المشكلة في الحل هو "Xdebug.remote_AutoStart = ON.". إذا قمت بتعيين في تكوين الملفات"Xdebug.remote_AutoStart = ON.". سيؤدي ذلك إلى فرض XDEBUG لبدء جلسة تصحيح لكل طلب يتم ذلك على هذا الخادم، دون الحاجة إلى تحديد ذلك في الطلب مطلوب جلسة تصحيح.

تحتاج إلى التغيير

"XDEBUG.REMOTE_AUTOSTARTART = OFF."

وإعادة تشغيل خدمة الويب. في هذا المثال هو Apache.

يمكنك قراءة المزيد هنا: http://doc.waterproof.fr/phpedit/debugging_profiling/configuration/debugger_with_xdebug.

حظ سعيد!

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top