目前,我的目录结构如下:
- project
- app
- Config
- file1.php
- file.txt
该项目文件夹位于/var/www/html
文件夹中。我将file.txt
使用file1.php
以下代码进行包含。
require_once '../../file.txt';
问题是,即使文件存在,它也无法找到它。这在装有 Ubuntu 18.04 的本地系统上运行良好,但在装有 Ubuntu 19.04 的服务器上却无法运行。该项目是使用 CakePHP 框架构建的。
$ ls -ld /var/www/html/project /var/www/html/project/app \
/var/www/html/project/app/Config /var/www/html/project/file.txt
drwxr-xr-x 6 root root 4096 May 30 11:01 /var/www/html/project
drwxrwxr-x 13 root root 4096 May 29 08:09 /var/www/html/project/app
drwxrwxr-x 3 root root 4096 May 30 05:29 /var/www/html/project/app/Config
-rw-r--r-- 1 root root 3401 May 30 11:13 /var/www/html/project/file.txt
答案1
在我看来,这是当前工作目录的不同php
。工作系统将其.../project/app/Config
作为当前目录,而损坏的系统将其.../project
作为当前目录。
一种解决方法是确定的file1.php
当前目录,然后file.txt
使用相对路径引用那里。如果我在中使用它file1.php
,它正确地包括file.txt
:
require_once(dirname(__FILE__).'/../../file.txt');