我有一个旧的kohana应用程序,我试图把我的VPS,但似乎无法让它工作。我花了几个小时谷歌搜索并查看缓存的论坛答案。我已经尝试了所有这些似乎没有任何作用。诚然,我不知道如何处理nginx。我的本地版本的应用程序可以正常使用apache。我离取消我的linode帐户并获得共享主机只有一步之遥!请告诉我这个窗台。
我的VPS使用php5-fpm和nginx 1.4.6运行Ubuntu 14.04 LTS。我正在从我的用户目录中提供所有内容。
我的nginx网站 - 可用文件:
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /home/gabreal/Sites/public;
index index.html index.htm index.php;
# Make site accessible from http://localhost/
server_name localhost;
location / {
try_files $uri $uri/ @kohana =404;
}
error_page 404 /404.html;
# redirect server error pages to the static page /50x.html
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root /usr/share/nginx/html;
}
# pass the PHP scripts to FastCGI server listening on 127.0.0.1:9000
location ~ \.php$ {
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
location @kohana {
rewrite ^/(.+)$ /index.php$request_uri last;
}
# deny access to .htaccess files, if Apache's document root
# concurs with nginx's one
location ~ /\.ht {
deny all;
}
}
我的Kohana应用程序位于如下目录中:
├──/home/gabreal/Sites/public/
│ ├── horizons/
│ │ ├── grader/ (aka the kohana application)
│ │ │ ├── index.php
│ │ │ ├── application/
│ │ │ ├── system/
当我通过转到http://example.com/horizons/grader
访问应用程序时,加载kohana引导程序文件并调用所有重定向。例如,我的默认路由会将您重定向到起始页面。如果您尚未登录,则转到“用户/登录”。网址设置正确。转到上面的网址,浏览器重定向到http://example.com/horizons/grader/user/login
,但我得到 nginx 404页面。
所以不知何故controller/action
模式不适合这个nginx设置。
请帮助在这个世界上爱你所爱的一切。
更新
仅供参考,我安装了phpmyadmin,它运行正常。我仍然无法让kohana工作......
更新2
我做了一个新的kohana安装,并尝试设置一些基本的控制器。只有默认控制器才能像我的应用程序一样工作。所以,转到我的应用程序的基本网址总是有效但直接转到任何/ controller / action / id类型的资源在新安装上给我 nginx 404错误 和我现有的申请。
答案 0 :(得分:2)
您正在使用的nginx配置不再被认为是将PHP执行传递回FPM的正确方法。以下示例基于WordPress documentation的原始部分和略微修改过的部分,是一种更适合您的方式。
server {
listen 80 default_server;
listen [::]:80 default_server ipv6only=on;
root /home/gabreal/Sites/public;
index index.html index.htm index.php;
server_name localhost;
location / {
try_files $uri $uri/ /index.php?$args;
}
location ~ [^/]\.php(/|$) {
fastcgi_split_path_info ^(.+?\.php)(/.*)$;
if (!-f $document_root$fastcgi_script_name) {
return 404;
}
# This is a robust solution for path info security issue and works with "cgi.fix_pathinfo = 1" in /etc/php.ini (default)
include fastcgi.conf;
fastcgi_index index.php;
fastcgi_pass php;
location ~ \.php$ {
# With php5-fpm:
fastcgi_pass unix:/var/run/php5-fpm.sock;
fastcgi_index index.php;
include fastcgi_params;
}
}
}
请注意,为简洁起见,我没有包含404和50x处理程序以及.ht
- 文件保护程序。您可以在问题中将这些内容放回原点。