configurationNginx和php5-fpm以使用Codeigniter

正当我试图从Apache 2切换到Nginx时,我遇到了许多问题,并且仍在修复它们。 无论如何,我试图让他们工作,但没有运气。 所以我在这里寻求帮助/以前的经验。

我使用默认的configuration来运行PHP,并且只在运行PHP文件时效果很好。 但不幸的是,codeigniter的URL不会以* .PHP结尾。 所以我认为PHP-FPM不会将我的脚本当作PHP文件,因为URL不会以*.PHP 。 我只是猜测。

那么,有没有什么办法让他们工作? 对我来说似乎是不可能的,我尝试了很多configuration(在修改它们以适应我的环境,ofcource之后),但是它们中没有一个与Codeigniter一起工作。

希望张贴我目前的configuration,正常的PHP文件的作品,将导致一些解决scheme。
注意:这与Nginx的Codeigniter框架的wiki页面中的内容完全相同。

 server { server_name _;#_ to catch all requests. root /usr/share/nginx/www; index index.html index.php; # set expiration of assets to MAX for caching location ~* \.(ico|css|js|gif|jpe?g|png)(\?[0-9]+)?$ { expires max; log_not_found off; } location / { # Check if a file exists, or route it to index.php. try_files $uri $uri/ /index.php; } location ~* \.php$ { fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; fastcgi_split_path_info ^(.+\.php)(.*)$; include fastcgi_params; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; } } 

使用以前configuration为我的/sites-enabled/defaultconfiguration使PHP工作,但不codeigniter,我得到的只是白页和codeigniter的自定义404访问不存在的文件时。

我也重新configurationconfig.php文件,如下所示:

 $config['base_url'] = "http://localhost/"; $config['index_page'] = ""; $config['uri_protocol'] = "REQUEST_URI"; 

我尝试了这些configuration和其他很多,通常是相同的结果。

无论如何,有几点(希望)会给我一个答案:

我在Debian 6 / Ubuntu 12.04上试过这些configuration

2.从apt-get运行最新的php5-fpmnginx

3.我注意到,注释掉SCRIPT_NAMESCRIPT_FILENAME (在fastcgi_params文件中)会导致codeigniter显示错误。 然而,对上述当前configuration发表评论并没有任何影响。

4.对于/usr/share下所有文件的文件权限是777 ,我知道它是不安全的,但是我只用它来进行testing。

我find了解决这个问题的方法。 这与Codeigniter和Nginx没有关系。 探针是在MySQL内部,因为我自动加载的数据库库,在请求任何页面时连接到MySQL。 MySQL本身并没有安装,这就是为什么没有任何工作。

在Debain / Ubuntu中,我所做的只是apt-get install mysql-server mysql-client php5-mysql ,然后设置mysql并重新启动php-fpm service php5-fpm restart 。 你很好走。

try_files将任何不存在的URLredirect到index.php

问题在于块location ~ \.php没有考虑在内。

将此块内的所有内容重新复制到上面的块中,紧跟在try_files之后。