السلام عليكم
لمن لديه خبرة في برمجة 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