В настоящее время структура моего каталога выглядит следующим образом:
- 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
Мне кажется, это разница в текущем рабочем каталоге php
. Рабочая система имеет .../project/app/Config
в качестве текущего каталога, в то время как сломанная система имеет .../project
в качестве текущего каталога.
Одним из обходных путей было бы определить текущий каталог file1.php
и затем обратиться к file.txt
с относительным путем из туда . Если я использую это в file1.php
, это правильно включает в себя file.txt
:
require_once(dirname(__FILE__).'/../../file.txt');