Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中包含与路径相关的问题_Php_Php 5.5 - Fatal编程技术网

在php中包含与路径相关的问题

在php中包含与路径相关的问题,php,php-5.5,Php,Php 5.5,我有一个PHP应用程序,其中autoloader位于/var/www/html/example.com/src/vendors/autoloader.PHP var/ www/ html/ example.com app/ vendors/ vendor_a/ example.php vendor_b/ vendor_c/ autoload

我有一个PHP应用程序,其中autoloader位于
/var/www/html/example.com/src/vendors/autoloader.PHP

var/
  www/
    html/
      example.com
        app/
        vendors/
          vendor_a/
           example.php
          vendor_b/
          vendor_c/
          autoloader.php
        public/
autoloader.php
中,我有一行代码需要
example.php
来自
vedor\u a/
文件夹。 虽然这在我运行centos、php fpm、nginx的本地虚拟机中可以工作,但在我的vps中无法工作,vps与我在本地主机上运行的每个程序的版本相同

我使用的是php5.5.14

当我需要上面的文件时,我得到了这个错误

警告:require(vendor_a/example.php):无法打开流:第2行的/var/www/html/example.com/vendors/autoloader.php中没有此类文件或目录

致命错误:require():无法在第2行打开/var/www/html/example.com/vendors/autoloader.php中所需的“vendor_a/example.php”(include_path=”:/usr/share/pear:/usr/share/php)

我没有修改我的
php.ini
中的任何内容,其中
include\u路径默认为

; UNIX: "/path1:/path2"
;include_path = ".:/php/includes"

我在这里寻找的不仅仅是一个解决方案。因为我可以看到
include\u路径
require
include
include\u once
等构造时查找
php/include
目录。。。至少我找不到一个名为
php/includes
的目录,那么为什么还要设置它呢

看起来您正在检查的php.ini不是php正在使用的php.ini,因为错误表明include\u路径是
:/usr/share/pear:/usr/share/php
,但开头的
表示它首先正确检查了当前工作目录。检查
phpinfo()
的输出以查看实际加载的php.ini的路径。您没有通过
chdir()
更改工作目录的代码吗?就在
require('vendor_a/example.php')之前假设这是您的行的外观,
echo getcwd()
查看当您试图从供应商_a中包含时PHP认为它在文件系统中执行的位置。@MichaelBerkowski这是正确的,我可以看到
加载的配置文件/etc/PHP.ini
Ooohh我从PHP.ini误读了您粘贴的片段。它实际上并没有使用
:php/includes
,而是用
注释掉。这只是发行版php.ini中的一个默认示例(我也有),下面一行描述了默认路径是什么(即错误消息指示的路径),因此您的包含路径确实是
include\u path='。:/usr/share/pear:/usr/share/php'