如何让php include_path在自定义目录上工作'/var/custom#u目录';?
我认为php包含路径是一个非常简单的概念。我已经做了很多次了,但是现在我很难让它工作 我在经营一家公司 azure上使用Apache/2.4.6 PHP/5.4.16的centos 7.1服务器 当我在如何让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.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