2016-09-16 74 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