مشكلة الربط عبر API بين برمجيات متواجده في نفس الخادم

السلام عليكم

لمن لديه خبرة في برمجة API

قمت بعمل عدة برمجيات كمثال كابتشا وبوابة رسائل SMS برمجتها بحيث يتم ربطها مع المشاريع الأخرى عبر API اللغة المستخدمة PHP

أستخدم مكتبة CURL وأحيانا دالة get_file_contants للتعامل مع API

جميع البرمجيات كانت تعمل في الخادم المحلي وتم ربطها بدون مشاكل

لكن ظهرت مشكلة حين رفع البرمجيات على الموقع وهي عند الاتصال عبر API تكون الإستجابة صفحة بيضاء بدون إرجاع اي أخطاء

المشكلة تحدث حين تكون البرمجية والمشروع المستفيد منها في نفس الخادم فحين نقلت المشروع المستفيد منها لخادم آخر تكون الإستجابة سليمة ونفس الشي إذا نقلت البرمجية لخادم آخر

بعد عدة تجارب

لاحظت الاتي

مكتبة CURL ودالة get_file_contants وحتى دالة fread حين أقوم باستخدامهم لفتح للإتصال بملف نوعه php يتم تجاهل كل المحتوي الموضوع بين <?php ?>

الا في حالة كان الملف في حادم مختلف فإن الإستجابة تكون ناتج معالجة الملف

كمثال للتوضيح

لدي الملف الاتي show.php ما بين الخطوط هو محتوى الملف


111
<?php 
echo"222";
?>
222

لو فرضنا أن نطاق الموقع الذي يحوي البرمجية والمشروع كان csg-soft.com لو حاولت فتح الملف باستخدم الدوال السابقة كمثال get_file_contants

echo get_file_contants("

");

ستكون النتيجة

111

333

حيث سيتم تجاهل ما بين كود php

لكن لو كانت البرمجية في خادم مختلف

ستكون النتيجة هي

111

222

333

فكرت في أنه ربما الأمر متعلق بإعداد الخادم أو ملف php.ini لكن لم اصل لنتيجة او معلومة تثبت ذلك او تفنده

هل لدا أحدكم حل لهذه المشكلة أو هل توجد طرق أخرى php للربط عبر API عير الطرق التي ذكرتها أعلى

يرجى الدخول لحسابك أو تسجيل حساب لتستطيع إضافة تعليق
حساب جديد دخول

التعليقات

  • استخدم الـ IP مباشراً بدلاً من اسم النطاق وسيعمل معك.

  • المُشكلة خاصة بإعدادت الخادم في الـ vhosts للـ apache أضف اسم النطاق بعد الـ IP الداخلي في ملف etc/vhosts وبعدها يُمكنك استخدام اسم النطاق في جلب المحتويات من خلاله على نفس الخادم.

  • لا تنسى متابعة أخطاء الخادم من الملف error_log داخل usr/local/apache/logs أو على حسب مكان وجود الـ apache على الخادم لديك.

استخدم الـ IP مباشراً بدلاً من اسم النطاق وسيعمل معك.

نفس النتيجة تجاهل ما بين أكواد php

المُشكلة خاصة بإعدادت الخادم في الـ vhosts للـ apache أضف اسم النطاق بعد الـ IP الداخلي في ملف etc/vhosts وبعدها يُمكنك استخدام اسم النطاق في جلب المحتويات من خلاله على نفس الخادم.

لوحة التحكم الخاصة بالموقع هي exptendcp ولم أجد مجلد بهذا الاسم

لا تنسى متابعة أخطاء الخادم من الملف error_log داخل usr/local/apache/logs أو على حسب مكان وجود الـ apache على الخادم لديك.

نفس المشكلة لم أجد ملف error_log

  • صادفتني نفس المُشكلة عندما رفع تطبيقي أحد العُملاء على استضافته، لم أجد حل للمُشكلة حينها واقترحت استخدام التطبيق من نطاق أخر ليعمل بشكل جيد.

  • الآن قمت بالتجربة على استضافتي وحدثت نفس المُشكلة، ولكن مع استخدام الـ IP مباشراً ظهرت النتائج بدون مُشكلات، استخدم centos 6 64bits عبر لوحة تحكم centos-web-panel

أليس الأصح file_get_contents وليس get_file_contants

صحيح

والخطأ هنا فقط في البرمجية مكتوبة صحيحة

اذا لم يتم ارجاع خطاء وكانت الصفحه فارغه تاكد من فراغ الصفحه عبر اداه inspect

وكذالك تاكد من ملف error_log او error.log ! في الاستضافه التي لديك .. بعض الاستضافات لاتظهر الاخطاء ولاكن تضيفهم الى ملف اسمه error ..

الصفحة المرجعة ليس فارغة

هو فقط يتجاهل تنفيذ أو عرض ما بين كود php