2016-09-16 72 views
0

我嘗試從我的計算機的不同位置包含PHP文件。所以我定義的不同包括在我的php.iniPHP.ini包含不同驅動器的windows上的include_path

include_path=".;C:\project\a;X:\project\b" 

路徑當我嘗試包括文件X:對ç\項目\ B \ file_b.php從PHP腳本:\項目\一\ file_a.php

require_once("file_b.php"); 

require_once("X:\project\b\file_b.php"); 

我得到的錯誤

Warning: require_once(X:\project\b\file_b.php): failed to open stream: No such file or directory in C:\project\a\file_a.php on line 2

Fatal error: require_once(): Failed opening required 'X:\project\b\file_b.php' (include_path='.;C:\project\a;X:\project\b') in C:\project\a\file_a.php on line 2

Abort Processing during Fatal-Error: require_once(): Failed opening required 'X:\project\b\file_b.php' (include_path='.;C:\project\a;X:\project\b') Error in Script C:\project\a\file_a.php on Line 2

我已經嘗試了一切,我可以用我的knowlegde做,但沒有任何工作。 我希望有人能解決這個問題。在Windows系統上的不同驅動器上包含路徑有問題嗎?

最好的問候, bition

+0

做你的服務器是在具有訪問該驅動器/文件夾/文件權限運行的任何用戶ID?並注意,不要在php中使用反斜槓作爲路徑。 'file_get_contents(「C:\ now \ then \ forever」)'在「now \ then」子目錄中不是永遠讀取文件,而是讀取'c:[linefeed] ow [tab] hen [formfeed] orever' –

+0

您可以在'require_once'指令前嘗試'chdir' .... http://php.net/manual/en/function.chdir.php – Hackerman

+0

感謝您的意見。 @Marc B:應該包含的文件可以被任何人訪問。所以我認爲這些文件沒有任何問題。 – bition

回答

0

後很長一段時間,我終於爲我的特殊問題的答案。

這真的很特別,因爲我使用BoxCryptor來加密我的D:驅動器。 BoxCryptor創建虛擬設備X :,但它不適用於Apache和PHP。但我可以配置BoxCryptor安裝設備X:作爲rwal硬盤。在我確定之後,萬物都可以正常工作。

對不起,我的vortual和真正harddrives的困惑,並感謝您的幫助!

最好的問候, bition

-1

我有WAMP等在過去發現,使用backslashs工作。只是不要用雙引號「C:\ path」封裝字符串,這將處理內容爲@Marc B警告。而是用單引號'C:\ path'封裝字符串,然後不處理內容。

如果單引號字符串的內容中的反斜槓仍在處理中,請嘗試以下操作。

<?php 

$path = 'X:/project/b/file_b.php';   // PATH WITH FORWARD SLASHS 
$path = str_replace(chr(47) ,chr(92) ,$path); // REPLACE FORWARD WITH BACKWARD SLASHS 
require_once($path);       // RUN FILE 

?> 
+0

字符串替換是完全不必要的。只需使用'\\'。另外,如果你使用單引號,它首先不應該成爲一個問題。 – Brad

+0

我不確定這是否完全準確,我在本地路徑中使用正斜槓的Windows系統上遇到過問題。在代碼示例之前,我在提示中提到了引用封裝。 – ZBerg

+0

然後不要使用正斜槓...使用反斜線。重點是,你可以在你的字符串文字中使用反斜槓。不需要更換。 – Brad