我正在尝试使用 Nginx 和 HHVM 在运行 Ubuntu 14.04 LTS 的虚拟机上设置开发环境。为此,我遵循了教程这里。
这对于新安装的 Laravel 来说很合适。但是当我导入现有的 Laravel 4 项目并尝试在我的实际机器上打开它时(它将作为运行 Windows 7 的客户端),我得到了一个404 文件未找到连接到时屏幕上出现错误http://sav.savrichard.dev。我确实将其添加到具有正确 IP 地址的 hosts 文件中。
虚拟机正在接收请求并以 404 错误响应。
我该如何解决这个错误?我对 Ubuntu 还很陌生,所以我不太清楚到底出了什么问题。
该项目位于
/var/www/sav.savrichard.net
服务器配置如下:
server {
listen 80 default_server;
root /var/www/sav.savrichard.net/public;
index index.html index.htm index.php;
server_name sav.savrichard.dev;
access_log /var/log/nginx/localhost.sav.savrichard.dev-access.log;
error_log /var/log/nginx/localhost.sav.savrichard.dev-error.log error;
charset utf-8;
location / {
try_files \$uri \$uri/ /index.php?\$query_string;
}
location = /favicon.ico { log_not_found off; access_log off; }
location = /robots.txt { log_not_found off; access_log off; }
error_page 404 /index.php;
include hhvm.conf;
# Deny .htaccess file access
location ~ /\.ht {
deny all;
}
}
hhvm.conf 文件是:
location ~ \.(hh|php)$ {
fastcgi_keep_conn on;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
编辑 1 (2014-06-13)
我尝试使用不同的 Ubuntu 14.04 VM 进行全新安装,但尝试通过浏览器中的 localhost 访问根目录时出现相同的错误。与上次一样,错误为 404 文件未找到。
编辑 2 (2014-06-13)
根据 roadmr 的要求,以下是访问和错误日志中的条目。
访问日志
这些条目如下所示:
192.168.174.1 - - [13/Jun/2014:10:16:45 -0700] "GET / HTTP/1.1" 404 49 "-" "Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko)
错误日志
是的,错误日志实际上是空白的。
编辑 3 (2014-06-13)
在 Ubuntu 主机文件中添加了与 Windows 机器中相同的条目。结果相同。
编辑 4 (2014-06-13)
也许需要注意的是,Ubuntu VM 的本地 IP 地址是192.168.174.130运行 Windows 7 的本地计算机是192.168.2.105
答案1
今天我想和你一起尝试一个可能的解决方案。编辑你的配置文件。在行中将try_files
整行替换为try_files $uri $uri/ /index.php?$query_string;
答案2
找到解决方案了吗?发生这种情况的原因是,从其他计算机复制的文件为文件和文件夹提供了 600 权限。您需要更改文件夹的文件 644 和 755 的权限,但 app/storage 文件夹(Laravel 4)和 storage 文件夹(对于 laravel 5)除外,需要具有 775 权限。下面这一行对我有帮助。我很确定它也会对你有帮助。我使用的是 Laravel 4.2,所以如果你使用的是 Laravel 5,请更改存储文件夹的路径
sudo find /var/www/project_name \( -type d -exec chmod 755 -- {} + \) -o \( -type f -exec chmod 644 -- {} + \)
sudo chgrp -R www-data /var/www/project_name
sudo chmod -R 775 /var/www/project_name/app/storage