Сменить index.php на другой файл nginx, vagrant, laravel homestead

113
16 мая 2021, 14:20

Есть проект на симфони, который хочется развернуть в homestead laravel.

Столкнулся с проблемой, что у данного проекта не index.php а app.php. Сервер не может найти файл для запуска.

No input file specified.

При переименовании на index.php - вроде запускается. Так же присутствует .htaccess, который почему то не считывается, так как в нем все перенаправления на app.php есть.

Как правильно настроить nginx в vagrant? Возможно это как то настроить в Homestead.yaml?

app.php app_dev.php - это уже я дописал, но не помогло.

server {
    listen 80;
    listen 443 ssl http2;
    server_name xxx;
    root "/home/vagrant/projects/xxx/web/";
    index index.html index.htm index.php app.php app_dev.php;
    charset utf-8;

    location / {
        try_files $uri $uri/ /index.php?$query_string;
    }
    location = /favicon.ico { access_log off; log_not_found off; }
    location = /robots.txt  { access_log off; log_not_found off; }
    access_log off;
    error_log  /var/log/nginx/xxx-ssl-error.log error;
    sendfile off;
    client_max_body_size 100m;
    # DEV
    location ~ ^/index\.php(/|$) {
        fastcgi_split_path_info ^(.+\.php)(/.*)$;
        fastcgi_pass unix:/var/run/php/php7.2-fpm.sock;
        include fastcgi_params;
        fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;

        fastcgi_intercept_errors off;
        fastcgi_buffer_size 16k;
        fastcgi_buffers 4 16k;
    }
    location ~ /\.ht {
        deny all;
    }

    ssl_certificate     /etc/nginx/ssl/xxx.crt;
    ssl_certificate_key /etc/nginx/ssl/xxx.key;
}
Answer 1

try_files означает, что сервер попробует найти файл совпадающий с путём в запросе, если не найдёт, то запросит index.php.

Для index.php есть специальное правило -- передать обработку в fpm.

Соответственно, поменяв index.php на app.php, вы добьётесь желаемого.

try_files $uri $uri/ /app.php?$query_string;
...
location ~ ^/app\.php(/|$) {

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

UPD: Решение в статье, кажется немного устарело. Но идея должна сработать. В папке со скриптами для разных типов сайтов можно разместить собственный (скопируйте какой-нибудь из существующих). Скрипт должен выполниться, если тип проекта в конфиге совпадает с именем скрипта.

READ ALSO
Parse error: syntax error, unexpected '<', expecting end of file

Parse error: syntax error, unexpected '<', expecting end of file

Просмотрел около 10 вопросов по схожей проблеме в англоязычной версии, однако в тех случаях проблемы с if-конструкциями, функциями, тд

107
Как сделать страницы

Как сделать страницы

И так в чем суть вопроса, мне нужно с помощьюhtaccess и php сделать чтобы в адресной строке страница www

95
Неправильная кодировка в error_log

Неправильная кодировка в error_log

При записи в лог через error_log (PHP) неправильно отображает русскоязычную кодировкуНапример, выводит:

115
Как корректно передать значение

Как корректно передать значение

День добрый, что-то понять не могу в чем проблемаЧерез php передаю функцию

97