LINUX.ORG.RU
ФорумAdmin

Помогите разобраться с путями,  PHP показывает неправильный путь.

 


0

1

Привет. Только начал изучать Docker с установления WEB-сервера. Структура такая:

  1. dockerDir compose.yaml
  • etc
    • nginx/conf.d/vhost.conf
    • php/conf.d/uploads.ini
  • images/php74/Dockerfile
  • mysql-data
  • phpmyadmin
  • www/site.my/public_html/index.php
  • www/site.my/script
  1. etc/nginx/conf.d/vhost.conf:
server{
#error_log /var/www/public_html error.log debug;

    listen 80;
    server_name site.my;
    index index.php;
    root /var/www/public_html/;
    #alias /www/site.my/public_html;
    #access_log  access.log;
    #error_log   error.log;
    location ~ \.php$ {
        #alias ./www/site.my/public_html/;
        #error_log "error.log" debug;
        try_files $uri = 404;
        fastcgi_pass php_74:9000;
        fastcgi_index index.php;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME$document_root$fastcgi_script_name;
        #fastcgi_param SCRIPT_FILENAME www/site.my/public_html$fastcgi_script_name;
        #fastcgi_param SCRIPT_FILENAME $document_root/$fastcgi_script_name;
        fastcgi_param REMOTE_ADDR 127.0.0.1;
        include       fastcgi_params;
        #fastcgi_param PHP_VALUE open_basedir="/var/www/public_html:/new/path";
    }
}
  1. compose.yml
networks:
  nginx_p74m8:
    #name: nginx_p74m8
services:
  nginx:
    container_name: nginx
    image: nginx
    ports:
      - 80:80
    volumes:
      - ./etc/nginx/conf.d/vhost.conf:/etc/nginx/conf.d/default.conf
      - ./www/site.my/public_html:/var/www/public_html
      #- ./www:/var/www/public_html
      #- ./www/site.my/public_html:/www/site.my/public_html
    networks:
      - nginx_p74m8
    command: [ nginx-debug, '-g', 'daemon off;' ]
    depends_on:
      - php_74
      - mysql_8
  php_74:
    container_name: php74
    build: ./images/php74
    #image: php:7.4-fpm
    volumes:
      #- ./site.my/public_html/:/var/www
      - ./www/site.my/public_html:/var/www/public_html
      - ./etc/php/conf.d/uploads.ini:/usr/local/etc/php/conf.d/uploads.ini
    networks:
      - nginx_p74m8

Здесь еще конфиги для mysql и phpmyadmin

Вопрос такой. Когда я вызываю в php текущий адрес файла index.php : echo 'FILE: '.__FILE__.'<br>';

он мне возвращает: FILE: /var/www/public_html/index.php а должен FILE: /www/site.my/public_html/index.php

Когда я пытаюсб проверить наличие каталога script, который на том же уровне что и public_html он возвращает что каталога нет:

if(is_dir(dirname(__DIR__).'/scripts'))echo 'No dir';

Хотя каталог есть: www/site.my/script

В конфигах же я сделал переадресацию. Почему так? Подскажите пожалуйста.

По-моему не туда разместил тему. Извините.

Перемещено hobbit из general



Последнее исправление: unsetting (всего исправлений: 5)
Ответ на: комментарий от Pinkbyte

И на всякий случай уточню: чтобы раз и навсегда избавиться от таких подмен путей, надо выкинуть докер и ставить всё по-нормальному. В докере ты при желании сможешь настроить всё так что бы пути не менялись, но это будет куча возни непонятно ради чего.

firkax ★★★★★
()
Ответ на: комментарий от George

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

firkax ★★★★★
()
Последнее исправление: firkax (всего исправлений: 1)