[英]PHP __DIR__ of file and backup by one directory
我正在使用PHP 7運行laravel服務器。我正在嘗試使用以下文件來請求文件:
require __DIR__.'/../bootstrap/autoload.php';
我正在運行此腳本的文件位於一個名為public的文件夾中。 因此, __DIR__
應該等於:
www.mydomain.com/myserver/public/index.php
腳本應創建的路徑應為:
www.mydomain.com/myserver/bootstrap/autoload.php
但是,不是動態創建正確的路徑,而是將“ /../”視為文字目錄,而不是告訴它返回原目錄。 所以我返回的路徑是:
www.mydomain.com/myserver/public/../bootstrap/autoload.php
任何想法為什么會發生這種情況? 提前謝謝了。
從realpath手冊中:
realpath()擴展所有符號鏈接,並解析對輸入路徑中/./、/../和extra /字符的引用,並返回規范化的絕對路徑名
因此,以下應該工作
require realpath(__DIR__."../bootstrap/autoload.php")
但是,這不是必需的,因為require可以自行解決相對路徑。
由於您使用的是laravel,因此推薦的方法是:
require base_path("boostrap/autoload.php")
然而實際的建議方法是坐下來,不知道你為什么要做這個開始與因為如果你啟動laravel正常應該做所有這些事情對你,你永遠不應該需要做require
的任何東西。
根據我的評論;
__DIR__
是當前目錄,如果要返回上一步,可以使用dirname
如:
dirname(__DIR__);
因此,如果您當前的目錄是(並且您現在在哪里):
C:/服務器/htdocs/system/main/index.php
__DIR__
將給您C:/server/htdocs/system/main
, dirname(__DIR__)
將給您C:/server/htdocs/system/
因此,使用以下內容將滿足您的需求;
require(dirname(__DIR__) . "/bootstrap/autoload.php");
首先, __DIR__
是指磁盤上的目錄 ,而不是URL,而不是文件。 所以這個說法是錯誤的:
我正在運行此腳本的文件位於一個名為public的文件夾中。 因此,
__DIR__
應該等於:www.mydomain.com/myserver/public/index.php
__DIR__
在Linux系統上將類似於'/var/www/mydomain-com/public'
,在Windows系統上將類似於'C:\\wamp\\mydomain-com\\public'
。
因此,您擁有的代碼將生成一個字符串,例如'/var/www/mydomain-com/public/../bootstrap/autoload.php'
。 至少在Linux和類似系統上,此路徑等效於/var/www/mydomain-com/public/autoload.php
因此您的代碼應該可以正常工作,並且是編寫此代碼的正常方法 。
如果您實際上想生成字符串'/var/www/mydomain-com/public/autoload.php'
,則可以使用dirname(__DIR__)
如其他答案所示。 這樣就從路徑中刪除了最后一部分,因此(使用上面的虛構路徑)為您提供了'/var/www/mydomain-com'
。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.