Vagrant 上的 Bolt CMS 不解析 PHP
Bolt CMS on Vagrant does not parse PHP
我的 vagrant box 不解析 PHP-Bolt CMS 的文件。
我从事开发多年,在 Vagrant 工作了大约 5 年,从未遇到过严重问题。
我想尝试一下 Bolt CMS,但是当我将浏览器打开到正确的 url (http://sallys.local:8000) 时,它总是想要下载索引文件(或任何其他文件)而不是解析它。
我的vagrant-box更新到了最新的8.10版本,我用的是Nginx,但是好像没有调用Nginx。我激活了访问日志,但它没有显示任何条目。对于我的其他项目,同样的盒子,它确实如此。
这个的 Nginx 配置是:
server {
listen 80;
listen 443 ssl;
server_name sallys.local;
root "/home/vagrant/sallys/public";
index index.html index.htm index.php app.php;
charset utf-8;
location / {
try_files $uri $uri/ /app.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;
access_log /var/log/nginx/sallys.local-ssl-acces.log;
error_log /var/log/nginx/sallys.local-ssl-error.log error;
sendfile off;
client_max_body_size 100m;
# DEV
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-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;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-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;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/nginx/ssl/sallys.local.crt;
ssl_certificate_key /etc/nginx/ssl/sallys.local.key;
}
我的其他项目也有类似的设置,它们都在端口 8000 上响应。并正确解析 PHP 文件。这似乎是一个菜鸟问题。但是我在这里找不到问题。
当我使用内置服务器时,它确实有效。所以一定是Nginx有问题
有人知道吗?
谢谢
蒂姆
看起来这是一个用于 Symfony 2/3 设置的 Nginx 站点配置(Symfony 4 更简单 FWIW),所以它不会工作 "out of the box",可以这么说。
我的猜测是 location / {}
,因为它引用 app.php
,默认情况下,Bolt 安装将使用 index.php
作为 webroot 中的索引文件。
Bolt 的文档中有一个 specific documentation page 涵盖了专门针对 Bolt 安装的 Nginx 配置,我想这对您的用例来说已经足够了。
谢谢你指点我,高文。我尝试了您的解决方案,但没有奏效。我删除了我的宅基地文件中的条目,重新配置了 vagrant,......并且它有效......
生成了一个新配置:
server {
listen 80;
listen 443 ssl http2;
server_name sallys.local;
root "/home/vagrant/sallys/public";
index index.html index.htm index.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/sallys.local-error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/nginx/ssl/sallys.local.crt;
ssl_certificate_key /etc/nginx/ssl/sallys.local.key;
}
我的 vagrant box 不解析 PHP-Bolt CMS 的文件。
我从事开发多年,在 Vagrant 工作了大约 5 年,从未遇到过严重问题。
我想尝试一下 Bolt CMS,但是当我将浏览器打开到正确的 url (http://sallys.local:8000) 时,它总是想要下载索引文件(或任何其他文件)而不是解析它。
我的vagrant-box更新到了最新的8.10版本,我用的是Nginx,但是好像没有调用Nginx。我激活了访问日志,但它没有显示任何条目。对于我的其他项目,同样的盒子,它确实如此。
这个的 Nginx 配置是:
server {
listen 80;
listen 443 ssl;
server_name sallys.local;
root "/home/vagrant/sallys/public";
index index.html index.htm index.php app.php;
charset utf-8;
location / {
try_files $uri $uri/ /app.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;
access_log /var/log/nginx/sallys.local-ssl-acces.log;
error_log /var/log/nginx/sallys.local-ssl-error.log error;
sendfile off;
client_max_body_size 100m;
# DEV
location ~ ^/(app_dev|config)\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-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;
}
# PROD
location ~ ^/app\.php(/|$) {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-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;
# Prevents URIs that include the front controller. This will 404:
# http://domain.tld/app.php/some-path
# Remove the internal directive to allow URIs like this
internal;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/nginx/ssl/sallys.local.crt;
ssl_certificate_key /etc/nginx/ssl/sallys.local.key;
}
我的其他项目也有类似的设置,它们都在端口 8000 上响应。并正确解析 PHP 文件。这似乎是一个菜鸟问题。但是我在这里找不到问题。
当我使用内置服务器时,它确实有效。所以一定是Nginx有问题
有人知道吗?
谢谢
蒂姆
看起来这是一个用于 Symfony 2/3 设置的 Nginx 站点配置(Symfony 4 更简单 FWIW),所以它不会工作 "out of the box",可以这么说。
我的猜测是 location / {}
,因为它引用 app.php
,默认情况下,Bolt 安装将使用 index.php
作为 webroot 中的索引文件。
Bolt 的文档中有一个 specific documentation page 涵盖了专门针对 Bolt 安装的 Nginx 配置,我想这对您的用例来说已经足够了。
谢谢你指点我,高文。我尝试了您的解决方案,但没有奏效。我删除了我的宅基地文件中的条目,重新配置了 vagrant,......并且它有效......
生成了一个新配置:
server {
listen 80;
listen 443 ssl http2;
server_name sallys.local;
root "/home/vagrant/sallys/public";
index index.html index.htm index.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/sallys.local-error.log error;
sendfile off;
client_max_body_size 100m;
location ~ \.php$ {
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_pass unix:/var/run/php/php7.1-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_intercept_errors off;
fastcgi_buffer_size 16k;
fastcgi_buffers 4 16k;
fastcgi_connect_timeout 300;
fastcgi_send_timeout 300;
fastcgi_read_timeout 300;
}
location ~ /\.ht {
deny all;
}
ssl_certificate /etc/nginx/ssl/sallys.local.crt;
ssl_certificate_key /etc/nginx/ssl/sallys.local.key;
}