带有 Nginx 路由的 FuelPHP 不工作
FuelPHP with Nginx routing not working
我对 FuelPHP 和一般的 Web 开发不熟悉。我正在尝试将用户重定向到另一个控制器,但由于某种原因我无法显示页面。主页显示正常,如果我将默认主页更改为博客页面,它显示正常。
这是主页上的 link:
<?php echo Html::anchor('blog', 'BLOG'); ?>
那我也有它指向的控制器:
class Controller_Blog extends Controller_Template {
public function action_index() {
return Response::forge(View::forge('blog/index', $views,false)->render());
}
当我点击 link 时,它会将我带到 'mywebsite.com/blog' 但它显示 "Access denied."
这是我的 nginx 虚拟主机:
server {
listen 80;
server_name mywebsite.com
index index.php index.html index.html
root /home/me/fuelphp_project/public;
location / {
index index.php
try_files $uri $uri @php_index;
location ~ \.php$ {
deny all;
}
location @php_index {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param FUEL_ENV "production";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
我不确定是我没有正确设置 FuelPHP 还是 Nginx。任何帮助将不胜感激,谢谢。
我设法让它工作了。我会 post 回答,以防其他人遇到这个问题。
为了澄清,这是在 Ubuntu 16.04 服务器 运行 Nginx 1.10.0 和 php7.0-fpm 上尝试设置 Fuelphp 项目。
从 ytsejam as a guide https://github.com/rajibmp/FuelPHP-Nginx/blob/master/nginx/sites-available/FuelPHP
使用此页面
我更改了一些内容以适应我的情况:
将server_name设为我的服务器
将根文件夹设置为我的fuelphp项目的public文件夹
我摆脱了 fastcgi_param SCRIPT_NAME $script
和 fastcgi_param PATH_INFO $path_info
,因为他们给我错误抱怨未声明的变量。
我的访问和错误日志文件在 /var/www/fuelphp/nginxlogs
设置fastcgi_pass unix:/run/php/php7.0-fpm.sock
listen 80
不知道为什么它说要将其设置为端口 57
然后我按照这里给出的提示进一步设置 php7.0-fpm: How to find my php-fpm.sock?
我认为这就是一切。感谢您的帮助ytsejam!
我对 FuelPHP 和一般的 Web 开发不熟悉。我正在尝试将用户重定向到另一个控制器,但由于某种原因我无法显示页面。主页显示正常,如果我将默认主页更改为博客页面,它显示正常。
这是主页上的 link:
<?php echo Html::anchor('blog', 'BLOG'); ?>
那我也有它指向的控制器:
class Controller_Blog extends Controller_Template {
public function action_index() {
return Response::forge(View::forge('blog/index', $views,false)->render());
}
当我点击 link 时,它会将我带到 'mywebsite.com/blog' 但它显示 "Access denied."
这是我的 nginx 虚拟主机:
server {
listen 80;
server_name mywebsite.com
index index.php index.html index.html
root /home/me/fuelphp_project/public;
location / {
index index.php
try_files $uri $uri @php_index;
location ~ \.php$ {
deny all;
}
location @php_index {
include /etc/nginx/fastcgi_params;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param FUEL_ENV "production";
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
}
我不确定是我没有正确设置 FuelPHP 还是 Nginx。任何帮助将不胜感激,谢谢。
我设法让它工作了。我会 post 回答,以防其他人遇到这个问题。 为了澄清,这是在 Ubuntu 16.04 服务器 运行 Nginx 1.10.0 和 php7.0-fpm 上尝试设置 Fuelphp 项目。
从 ytsejam as a guide https://github.com/rajibmp/FuelPHP-Nginx/blob/master/nginx/sites-available/FuelPHP
使用此页面我更改了一些内容以适应我的情况:
将server_name设为我的服务器
将根文件夹设置为我的fuelphp项目的public文件夹
我摆脱了
fastcgi_param SCRIPT_NAME $script
和fastcgi_param PATH_INFO $path_info
,因为他们给我错误抱怨未声明的变量。我的访问和错误日志文件在
/var/www/fuelphp/nginxlogs
设置
fastcgi_pass unix:/run/php/php7.0-fpm.sock
listen 80
不知道为什么它说要将其设置为端口 57
然后我按照这里给出的提示进一步设置 php7.0-fpm: How to find my php-fpm.sock?
我认为这就是一切。感谢您的帮助ytsejam!