在php中包含与路径相关的问题
我有一个PHP应用程序,其中autoloader位于在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
/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'