Hi,
Has someone got this working with Nginx and (php 5.2.x)?
I followed the instructions and got DB setup and those few configs. My problem now is that I can't log in to the admin backend.
If I go to www.domain.com/fuel --> it will redirect to domain.com/fuel/login/4c325a315a57773d which is ok. But if I enter admin / admin I will be redirected back to login page? (If entered something else I will get login error)
I am there stuck and I will not get into admin backend. Any clues what is going wrong?
I have tried with master and 0.91 version and both gives the same result.
When pressing login (when entered user & pass) it will:
post form to /fuel/login/4c325a315a57773d --> which will 302 redirect to /fuel
Which will 302 to /fuel/login/4c325a315a57773d
I will get ci_session cookie and fuel_something where value = 1 when trying to login.
This is needed for Nginx + php-fpm to get codeigniter to work at all.
fuel/application/config/config.php
$config['uri_protocol'] = "REQUEST_URI";
Here are the most important part of my Nginx configs:
#RewriteRule ^(fuel/modules/(.+)?/assets/(.+)) - [L]
if (!-f $request_filename) {
rewrite ^/(.*)(fuel/modules/.*) /$2 last;
rewrite ^/(.*)(/assets/.*) /$2 last;
}
location ^~ /fuel/crons {
deny all;
}
location ^~ /fuel/data_backup {
deny all;
}
# Do not allow direct access to the CodeIgniter front controller
location ~* ^/index.php {
rewrite ^/index.php/?(.*)$ /$1 permanent;
}
location / {
try_files $uri
@codeigniter;
}
# CodeIgniter Front Controller
location
@codeigniter {
internal;
fastcgi_pass php_socket;
fastcgi_index index.php;
fastcgi_split_path_info ^(.+\.php)(.*)$;
include /etc/nginx/conf/fastcgi_config_ci;
include /etc/nginx/conf/fastcgi_params_ci;
fastcgi_param SCRIPT_NAME index.php;
fastcgi_param SCRIPT_FILENAME /var/www/fuelcmssitefolder/index.php;
}
Comments
I couldn't find where the authentication is happening e.g. when getting /fuel/ url after login post? Any hint where to look. I could try to add some traces to see why it does not authenticate even tough it should.
Is FuelCMS using /index.php file as only front controller which should be loaded to PHP or is there some other front controllers also? E.G. there is this index.php in /fuel/ folder also... which is not accessed by my nginx conf at the moment.
This /backup/dashboard fails in cookie checking. For some reason this cookie fuel_(md5(site name)) is not set for this request as it was for the previous one.
Any ideas why this is failing?
... and of course... this cookie fuel_(md5(site_name)) has path /fuel... which obviously is not used when requesting /backup/dashboard ... so this is bug in FuelCMS after all and not Nginx issue.
Maybe backup/dashboard should be routed trough /fuel/backup/dashbord, right?
The dashboard ajax requests to /backup/dashboard should work and is the actual URI location. FUEL actually creates routes so that /fuel/backup/dashboard works.
The get_session_namespace method in Fuel_auth uses the fuel config value site_name (see the fuel/application/config/MY_fuel.php) so that there isn't session interference between multiple installations of FUEL on the same server.
It sounds like you are having trouble with the session getting set correctly so you get redirected. The session is using the CI sessions which uses a cookie instead of the native $_SESSION variable. I would first delete any localhost cookies that may pertain to the FUEL install and restart your browser and test again. Then, if you are still having troubles, I've found the following library to sometimes be useful that is a drop in replacement for the CI Session class which uses the $_SESSION variable (goes in fuel/application/libraries/ folder).
http://codeigniter.com/wiki/Category:Libraries::Session/
Try that out to see if you can't get the session working correctly.
The problem was that the $_SERVER['SCRIPT_NAME'] was only returning "index.php" and code needed the "/index.php" to be working properly. Without slash "/" WEB_PATH constant was empty and it was used to set login cookie path. If there was not path then it was defaulted to current path which was "/fuel". This caused that this cookie was not set when getting /backup/desktop which is checked with is_fuelified() function.
When I get all bits sorted out from nginx config, I'll post an example one to be used with FuelCMS.
Quick fix was to change SCRIPT_NAME like this:
fastcgi_param SCRIPT_NAME /index.php;