PHP لا يمكن قراءة الملفات التي تحتوي على شفرة PHP كملفات نصية

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

سؤال

ولقد عثر عليها في pecularity التالية:

و$ التعامل مع = الدالة fopen (realpath ( "مجلد ../ / files.php")، "ص")؛

لا يمكن قراءة الملف، ولكن بمجرد أن إزالة العلامات فب من الملف، يصبح للقراءة وكتاباتي بطباعة محتوى الملف غير فارغة على الصفحة. أيضا، يتم أبدا تنفيذ أي وقت مضى file.php، ولذا فإنني أتساءل لماذا هي المشكلة.

وأعتقد بطريقة أو بأخرى أباتشي أو PHP لا يسمح قراءة الملفات التي تحتوي على علامات بى PHP كنص فقط.

وكيف يمكنني تمكينه ملفي معين (فعل بطبيعة الحال على الصعيد العالمي سيكون غير آمن)؟

وعن طريق PHP 5.2.x و Apache 2.0

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

المحلول

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

وفيما يلي تفاصيل الاختبار:

والرمز:

$fh = fopen("test.php","r");
while ($line = fgets($fh)){
echo $line;
}

والملف يجب أن تقرأ (test.php):

testing <?php testing2 ?> testing3

والتقديم (على كل من كروم وفايرفوكس):

testing  testing3

وعرض المصدر (باستخدام فايرفوكس):

testing <?php testing2 ?> testing3

وعرض المصدر (باستخدام كروم - مصدر خطأي):

testing  testing3

نصائح أخرى

هل أنت متأكد أنك تفسير الانتاج بشكل صحيح؟ إذا قمت بطباعة محتويات الملف مباشرة لإخراج الصفحة الخاصة بك، سوف متصفح لا يتم عرض النص داخل أقواس زاوية لأنه يعتقد انها علامة. خدمة المحتوى الخاص بك كما text/plain، أو استخدام متصفح "عرض المصدر" القيادة للتأكد من كنت تبحث في ما هو حقا هناك، وليس فقط ما اختار المتصفح لعرضه.

وهم file_get_contents () يعمل بالنسبة لي. هل تصدر فقط لالدالة fopen؟

وتحرير: ما الخطأ الذي تحصل عليه بالضبط

وديع M. حل القضية. علامات PHP يخفي الناتج مصدر فب المغلقة العلامة كاملة في المتصفح، ولكن عرض المصدر يبين لهم. شكرا!

وأستخدمه htmlspecialchars($line);

ووحل المشكلة.

وإعادة تسمية الملف اقرأها الحصول على البيانات الخاصة بك تغييرها rerename الملف الخاص بك:)

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