IIS PHP 500 Error

لدي تطبيق يعمل في مكانين - خادم MAMP للتطوير على OS X ، مع PHP 5.3 و Apache ، وخادم IIS 6.0 الإنتاج مع PHP 5.3 كذلك.

المشكلة هي أن التطبيق يعمل بشكل جيد على Apache. لا توجد أخطاء أو تحذيرات أو أي شيء.

ولكن عند استدعاء دالة ثابتة لفئة "أدوات مساعدة" لدي على ملقم IIS ، أحصل على خطأ 500. المشكلة هي أن الوظيفة لا تدعى أبدا - وضع "صدى" في بداية الدالة لا يفعل شيئًا ، والذي يخبرني أنه ليس رمز داخل للدالة التي هي المشكلة. .. وظائف ثابتة أخرى من الطبقة تعمل بشكل جيد.

التحقق من السجل ( C: \ Windows \ temp \ php-errors.log ) إظهار أي شيء متعلق بهذه المشكلة ولكن يتم تسجيل أخطاء أخرى بشكل صحيح (أحرف غير متوقعة وأي شيء آخر).

هذه هي الوظيفة التي يتم الاتصال بها والمكان الذي يتوقف فيه البرنامج النصي عن التنفيذ:

json_encode(Utilities::ContextifyToUser(Article::getArticlesInCollectionOfUser($user), $user);

يُظهر فصل json_encode و getArticlesInCollection أنهما يعملان ويعيدان القيم الصحيحة. إنها وظيفة "Contextify" التي تقتلها.

هذه هي وظيفة contextify ، كما تم تعريفها في فئة تسمى Utilities :

public static function ContextifyToUser($obj = array(), $user = null){
        if(is_null($user) || !is_array($obj)){
            return null;
        }

        foreach($obj as $key => $value){
            $obj[$key] = $value->contextifyToUser($user);
        }

        return $obj;
    }

كما ذكرت سابقا ، لا يسمى أي من التعليمات البرمجية في الدالة. إذا وضعت "صدى مرحبا" "بعد تعريف الدالة ، فإنه لا يسمى أبدا.

هل هذا الرمز الخاص بي ، أو هل هذا شيء غريب مع IIS؟ بالنظر إلى هذا العمل بشكل مثالي في Apache ، أعتقد أنه الأخير ...

أود أيضًا الإشارة إلى عدم ظهور أي أخطاء أو تسجيلها ، على الرغم من تغيير معروضات INI واستخدام error_reporting (E_ALL) . يتم إلقاء خطأ 500 ببساطة ويوقف البرنامج النصي تنفيذ هذه النقطة.

0

1 إجابة

اتضح أنها كانت واحدة من وظائفي داخل أحد contextifyToUser بافتراض أن المتغير كان فئة ، لكنه كان لاغياً في الحالات. لم يحدث هذا في جهاز dev الخاص بي لأنه كان يستخدم مجموعة مختلفة من بيانات الإدخال.

ذلك. اكرهه. IIS. ما زلت غير متأكد من عدم تسجيل أي أخطاء وعدم طرح أي استثناءات أو أي شيء .

0
وأضاف