如何让php include_path在自定义目录上工作'/var/custom#u目录';?

如何让php include_path在自定义目录上工作'/var/custom#u目录';?,php,apache,azure,include-path,azure-virtual-machine,Php,Apache,Azure,Include Path,Azure Virtual Machine,我认为php包含路径是一个非常简单的概念。我已经做了很多次了,但是现在我很难让它工作 我在经营一家公司 azure上使用Apache/2.4.6 PHP/5.4.16的centos 7.1服务器 当我在php.ini中修改include_路径时。重新启动apache后出现的错误显示 无法打开所需的“xfile”(包括路径=。:/var/custom\u目录) 包含路径的文件格式正确 我可能有所有权问题 我可以将我的文件放在默认的usr/share/php目录和“include”页面中。但是,当我

我认为php包含路径是一个非常简单的概念。我已经做了很多次了,但是现在我很难让它工作

我在经营一家公司

azure上使用Apache/2.4.6 PHP/5.4.16的centos 7.1服务器

当我在
php.ini
中修改
include_路径时。重新启动apache后出现的错误显示

无法打开所需的“xfile”(包括路径=。:/var/custom\u目录)

包含路径的文件格式正确

我可能有所有权问题

我可以将我的文件放在默认的
usr/share/php
目录和
“include”
页面中。但是,当我试图将自己的目录放在
/var
中时,它们却没有

我以前做过,所以我不知道为什么它现在不起作用。 我已经把这些目录和它们的内容弄得一塌糊涂。甚至模仿服务器的工作目录。将所有权切换到apache
,并授予完全授权访问权限,只是试图让它从my
/var/www/html/index.php查看文件

我错过什么了吗? 是否需要在
php
http.conf
文件中启用或授予访问权限或修改某些内容

进一步资料: 这是system/etc/php.ini中包含的唯一php.ini文件

包含路径的目的是在防火墙后面提供编码/用户文件

我不认为这有什么关系,但我的虚拟机在Azure中

像这样的东西

include('/var/custom_directory/file.php'); 

也不管用。为什么?

包含路径的
ini设置会设置路径,但不会添加到路径中,因此,如果更改路径,则很可能意味着添加额外路径,例如:

include_path = ".:/usr/share/php:/var/custom_directory"
这可以确保您自己的
自定义目录
和标准的
/usr/share/php
目录都在路径中

(注意:在Linux上,路径分隔符是冒号(
),在Windows上是分号(

然而 您可能不想弄乱php.ini设置,因为这会影响所有php文件。如果您在服务器上放置另一个站点,该站点试图包含一个与自定义目录中的文件同名的文件,那么您将陷入混乱的境地

我建议您对以下内容进行鉴定:

include('../custom_directory/file.php');
include('/var/custom_directory/file.php');
include(SOURCE_DIR . 'file.php');
或者在脚本开头使用
set\u include\u path

$path = '/var/custom_directory';
set_include_path(get_include_path() . PATH_SEPARATOR . $path);

我有一个快速测试来测试你的要求

(环境:CentOs 7.1、Apache/2.4.6和PHP/5.4.16。)

我在“
/var/www/
”文件夹中创建了一个“
”文件夹,显示如下:

然后我在php.ini中设置
include\u path=“.:/var/www/includes”

在includes文件夹中,我放置了一个名为
phpinfo.class.php
的测试类文件,其中包含简单代码:

class phpInfo{
         public function echoinfo(){
                phpinfo(); 
         }
}
require('phpinfo.class.php');
phpInfo::echoinfo();  
在html文件夹中,有一个带有简单代码的测试PHP文件:

class phpInfo{
         public function echoinfo(){
                phpinfo(); 
         }
}
require('phpinfo.class.php');
phpInfo::echoinfo();  
这对我很管用

因此,您可以重新检查您的文件和路径


更新

我将
文件夹移动到“
”旁边的
”,并修改了php.ini,对我来说仍然工作正常,
include\u path
的设置将显示在php运行时环境中,我们可以检查配置


包含路径是什么?包含路径是php.ini文件中的配置设置。例如,在我的centos 7.1上,它位于/etc/php.ini。您需要它做什么?将文件放在后面的安全位置/www@Demodave,我的意思是,你的include_路径设置为什么?我知道这不是问题所在。你的include_路径是什么样子的,它在azure上吗?正如我上面所示,我的include_路径是“:/var/includes”。我的环境是在Azure上构建的centOS 7.1 VM。谁拥有你的目录?他们的权限是什么?你按照什么说明安装lamp堆栈?可能是我做错了。
sudo-yum-install-httpd
sudo-yum-install-php