سؤال

ضمن PHP (xampp) مثبتة على جهاز كمبيوتر يعمل بنظام Windows XP، أحاول قراءة DIR الموجود على خادم شبكة محلي. أنا استخدم is_dir() للتحقق مما إذا كان دير يمكنني قراءته.

في مستكشف Windows الأول \\\server\dir وهذا dir يظهر. عندما أقوم بتعيين محرك أقراص الشبكة، يمكن الوصول إليه z:\dir كذلك.

في PHP لدي هذا البرنامج النصي:

<?php if( is_dir($dir){ echo 'success' } ) ?>

بالنسبة $dir حاولت:

  • /server/dir
  • //server/dir
  • \server\dir
  • \\server\dir
  • \\\\server\\dir

و

  • z:\dir
  • z:\\dir
  • z:/dir
  • z://dir

لكنني لا أحصل على النجاح؟ اي فكرة؟ شكرا

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

المحلول

لقد حلها عن طريق تغيير بعض الأشياء في سجل الخادم كما هو موضح في الإجابة الأخيرة من هذه المناقشة:

http://bugs.php.net/bug.php؟id=25805.

بفضل Volkerk و Gumbo على أي حال! أحب stackoverflow وأشخاصهم العظيمين الذين يساعدونك بسرعة لا يصدق !!

تحرير (مأخوذة من PHP.NET):

تتمتع الخدمة في الوصول المحدود إلى موارد الشبكة، مثل الأسهم والأنابيب، لأنه لا يوجد لديه بيانات اعتماد ويجب الاتصال باستخدام جلسة فارغة. يحتوي مفتاح التسجيل التالي على قيم nullsessionpipes و nullsessionshares، والذي يتم استخدامه لتحديد الأنابيب والأسهم التي قد تتصل بها الجلسات الفارغة: hkey_local_machine system currentcontrolset services lanmansterver parameters بدلا من ذلك، يمكنك إضافة قيمة REG_DWORD RECRICTICTECTESSSESSSSSCESCE وقم بتعيينه على 0 للسماح لجميع جلسات NULL بالوصول إلى جميع الأنابيب والأسهم التي تم إنشاؤها على تلك الآلة.

أضف RestrictNullSessessAccess = 0 إلى السجل الخاص بك.

نصائح أخرى

ربما يمكنك ترك Xampp تثبيت Apache كخدمة وتشغيل البرامج النصية PHP من خلال هذا Apache. وخدمة Apache (تعمل Localsystem.) غير مسموح بالوصول إلى الشبكة طريقة حساب المستخدم الخاص بك.

ترث الخدمة التي تعمل في سياق حساب Localsystem السياق الأمان على SCM. يتم إنشاء SID المستخدم من قيمة Security_local_system_rid. لا يرتبط الحساب بأي حساب مستخدم مسجل.
هذا له العديد من الآثار:
...
   * تقدم الخدمة بيانات اعتماد الكمبيوتر إلى الخوادم البعيدة.
...

يمكنك اختبار هذا من خلال بدء تشغيل Apache كإيقاف وحدة تحكم (Apache_start.bat في دليل Xampp القيام بذلك) وتشغيل البرنامج النصي مرة أخرى. يمكنك استخدام القطابق إلى الأمام والخلف في مسار UNC. أود أن أقترح باستخدام // server / share منذ PHP لا يهتم / في سلسلة السلسلة.

<?php
$uncpath = '//server/dir';
$dh = opendir($uncpath);
echo "<pre>\n";
var_dump($dh, error_get_last());
echo  "\n</pre>";

جرب ال file: نظام URI:

file://server/dir
file:///Z:/dir

البداية هي دائما file://. وبعد مقطع المسار التالي هو الخادم. إذا كان على جهازك المحلي، اتركه فارغا (انظر المثال الثاني). أنظر أيضا ملف URIS في ويندوز.

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