Как в связке nginx - Symfony прописать символьную ссылку на phpmyadmin чтобы Symfony ее не обрабатывала?
Подскажите как правильно прописывать ссылки на сервере если после установки симфони у нее путь
root /var/www/html/symfony5/
Но при этом на главной странице сайта открывается папка
root /var/www/html/symfony5/public/
Ставлю PhpMyAdmin. Он по идее ставится по пути
/usr/share/phpmyadmin
Как мне теперь сделать чтобы его index.php открывался по ccылке site.com/phpmyadmin?
Во всех примерах есть установка символьной ссылки:
sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html
Но так не работает. Ни так:
sudo ln -s /usr/share/phpmyadmin /usr/share/nginx/html/symfony5
Как запустить файлы phpadmina? Или как например я могу настроить несколько разных проектов site.com/1, site.com/2 и т.д. чтобы Symfony не думала что это ее роуты?
Ответы (2 шт):
Если phpMyadmin лежит в папке /usr/share/phpmyadmin и вы хотите чтобы он открывался по URL /phpmyadmin, то вы должны создать в конфиге nginx для соответствующего блока server такой location
location = /phpmyadmin {
root /usr/share/phpmyadmin;
index index.php;
.... далее fastcgi_pass на php ....
}
И обечпечить чтобы у пользователей, под которыми работают сервисы nginx и php, был доступ к скриптам в папке /usr/share/phpmyadmin
Проблема решилась тем что по удалял все лишние конфиги, оставил только официальный конфиг Symfony 5 (в котором убрал фразу internal; и поправил на такой location ~* .php(/|$) {). Потом все заработало. Но все таки создал на поддомене PhpMyAdmin. Для этого у регистратора делаем новый поддомен, на сервер по пути "/etc/nginx/sites-enabled" добавляем конфиг имя поддомена.conf с содержимым (меняются данные на ваш поддомен)
server {
listen 80;
listen [::]:80;
server_name xx.xxx.ua www.xx.xxx.ua;
root /usr/share/phpmyadmin;
index index.html index.php;
client_max_body_size 100M;
location = /favicon.ico {
log_not_found off;
access_log off;
}
# optionally disable falling back to PHP script for the asset directories;
# nginx will return a 404 error when files are not found instead of passing the
# request to Symfony (improves performance but Symfony's 404 page is not displayed)
# location /bundles {
# try_files $uri =404;
# }
location ~* \.php(/|$) {
fastcgi_pass unix:/var/run/php/php7.4-fpm.sock;
fastcgi_split_path_info ^(.+\.php)(/.*)$;
fastcgi_buffer_size 32k;
fastcgi_buffers 4 32k;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $realpath_root$fastcgi_script_name;
fastcgi_param DOCUMENT_ROOT $realpath_root;
}
# return 404 for all other php files not matching the front controller
# this prevents access to other php files you don't want to be accessible.
location ~ \.php$ {
return 404;
}
location / {
# try to serve file directly, fallback to index.php
try_files $uri /index.php$is_args$args;
}
error_log /var/log/nginx/error.log;
access_log /var/log/nginx/access.log;}
Потом PhpMyAdmin откроется по ссылке вашего поддомена.