Re: Запуск php скриптов из разных директории

Gena Makhomed gmm на csdoc.com
Пт Июн 29 14:59:00 UTC 2018


On 29.06.2018 17:36, al3x wrote:

> При обращении по IP сервера nginx сначала смотрит в /home/user/ и если не
> находит там index.php, то смотрит в /home/admin/index.php и отдает его.

nginx не обрабатывает файлы *.php, этим занимается интерпретатор PHP.

  fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
  fastcgi_pass    127.0.0.1:9032;
  fastcgi_index   index.php;
  include /etc/nginx/fastcgi_params;

Все что делает nginx - он передает PHP полное имя файла
и некоторые дополнительные параметры и отдает клиенту результат.

> Далее /home/admin/index.php выполняет свою работу и хочет обработать файл
> template/news.html. Nginx должен проверить, нет ли этого файла в директории
> юзера /home/user/template/news.html и если есть, то отдать его. Если этого
> файла нет, то отдать из папки /home/admin/template/news.html

Когда PHP интерпретирует файл /home/admin/index.php
- nginx в этом процессе участия не принимает и никак не может
повлиять на то, какой именно файл будет прочитан интерпретатором PHP
из файловой системы.

> Затем юзер захотел создать свой личный модуль и положил его в папку
> /home/user/modules/new_module.php
> и когда /home/admin/index.php загружает модули из папки /modules/ то nginx
> должен сначала проверить все файлы в директории юзера /home/user/modules/, а
> затем здесь /home/admin/modules/ и таким образом подгрузить для PHP все
> модули из двух директорий, словно из одной.

Если скрипт /home/admin/index.php должен смотреть в два каталога,
то такую логику имеет смысл закодировать прямо внутри этого скрипта.
nginx в процессе интерпретации *.php файлов участия не принимает.

> Т.е. директории должны быть как бы зеркалами друг друга.
> 
> Это возможно сделать?

Теоретически - наверное возможно, если написать свой модуль ядра,
который будет реализовывать эту логику на уровне файловой системы.

Практически - лучше всего эту логику реализовать средствами PHP
в файле /home/admin/index.php - тогда все будет работать именно
так как хочется.

-- 
Best regards,
  Gena



Подробная информация о списке рассылки nginx-ru