لماذا يقوم getcwd() بإرجاع دليل مختلف عن ملف pwd المحلي؟

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

  •  09-06-2019
  •  | 
  •  

سؤال

أقوم ببعض أشياء PHP على خادم Ubuntu.

المسار الذي أعمل فيه هو /mnt/dev-windows-data/Staging/mbiek/test_list لكن استدعاء PHP getcwd() يعود /mnt/dev-windows/Staging/mbiek/test_list (لاحظ كيف أنها dev-windows بدلاً من dev-windows-data).

لا توجد أي روابط رمزية في أي مكان.

هل هناك أسباب أخرى ل getcwd() إرجاع مسار مختلف عن المحلي pwd يتصل؟

يحرر

اكتشفتها.ال جذر المستند في PHP تم تعيينه على /mnt/dev-windows الذي يرمي كل شيء.

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

المحلول

ما هو الملف الذي تستدعي فيه getcwd() وهل تم تضمين هذا الملف في الملف الذي تقوم بتشغيله (على سبيل المثال.تشغيل ملف Index.php، بما في ذلك ملف setup.php الذي يحتوي على gwtcwd()).

هل الملف الذي تقوم بتشغيله هو /dev-windows/ أو /dev-windows-data/؟إنه يعمل على الملف الذي تقوم بتشغيله بالفعل.


إليك مثال لمشروعي الحالي:

Index.php

<?php
    require_once('./includes/construct.php');
    //snip
?>

يتضمن/construct.php

<?php
    //snip
    (!defined('DIR')) ? define('DIR', getcwd()) : NULL;

    require_once(DIR . '/includes/functions.php');
    //snip
?>

نصائح أخرى

@ روس

لقد اكتشفت ذلك وقمت بتحديث OP بالحل.

@ روس

اعتقدت أن getcwd() كان يُرجع مسار نظام الملفات بدلاً من مسار عنوان url النسبي.

وفي كلتا الحالتين، تبقى الحقيقة أن المسار /mnt/dev-windows لا موجود بينما /mnt/dev-windows-data موجود.

@علامة

حسنًا، هذا أمر غريب تمامًا!ماهو لك include_path - قد يكون ذلك بمثابة العبث بالأمور.لقد تخليت عنها شخصيًا لصالح الملوثات لأنها مزاجية للغاية (أو لم أتعلم أبدًا كيفية تحقيق ذلك بشكل عادل).

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