PHP: لماذا يعمل Readdir معي في سطر الأوامر ولكن ليس المتصفح؟

StackOverflow https://stackoverflow.com/questions/3602419

سؤال

لدي 2 مجلدات: /var/www/vhosts/mydomain.com/httpdocs/ و /var/www/vhosts/mydomain.com/httpdocs/duh/

كلا المجلدين لهما نفس الجزر ، المجموعة ، المالك ، كل شيء.

إذا قمت بتعيين $ على المسار الأول ، فلا مشاكل ، فأنا أتردد في قائمة من الملفات مع "HTML" في اسم الملف.

إذا قمت بتعيين $ على المسار الثاني ، فإنه يموت على Opendir (). ومع ذلك ، فإنه يعمل بشكل جيد من سطر الأوامر ، وليس فقط المتصفح.

أيه أفكار؟

هذا هو رمزتي البسيطة للغاية:

<?php
        $path = "/var/www/vhosts/mydomain.com/httpdocs/duh/";

        $img_folder = opendir($path) or die("Unable to open $path");

         while (false !== ($file = readdir($img_folder))){
             if (eregi("html", $file)){
                echo $file;
             }
         }
    ?>
هل كانت مفيدة؟

المحلول 3

اكتشفتها. يحتوي الخادم الذي أعمل عليه على ملفات التكوين المحلية لكل VHOST. تم تعيين Safe_Mode على ON من أجل CONF المحلي.

بفضل أولئك الذين دفعوني إلى أسفل الطريق.

نصائح أخرى

ما هي الأذونات على duh مجلد؟ تذكر أن خادم الويب سيتم تشغيله ضمن معرف مستخدم مختلف عن حساب Shell الخاص بك. تأكد من وضع Dir's Mode 0755 ، لذا يمكن القراءة من قبل جميع المستخدمين.

عفوًا ، فقط تعليقك مع رسالة الخطأ. لذا ، نعم ، خطأ في الأذونات. duh مملوك بمعرف المستخدم 10012 ، بينما يعمل خادم الويب الخاص بك كجذر. الوضع الآمن لن يسمح بذلك. "تشون" الدليل المملوك للتجذر ...

بالطبع ، لماذا يعمل خادم الويب كجذر؟ هذا غير آمن بشكل فظيع.

حسنًا ، أنت تعرف الآن الإجابة: Its Safe_Mode ، واحدة من أكثر ميزات PHP.
هناك بعض الحلول ، لكن الأفضل منهم هو ركض من هذا المضيف بأسرع ما يمكن!
أو إيجاد طريقة لتعطيلها.

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