0

Hi we have recently switched our Magento application from Apache to nginx and PHP-FPM on CentOS 5.6. We have an external payment gateway that sends us back some transaction information. The PHP file that handles this has a if($_SERVER['REQUEST_METHOD'] == 'POST') condition.

There is code above this IF statement in that PHP file which is executing normally. However, all the code inside the IF statement is not being executed.

My etc/nginx/conf.d/domain.conf file:

fastcgi_read_timeout 240; server { listen 80; server_name domain.com; rewrite / $scheme://www.$host$request_uri permanent; ## Forcibly prepend a www } server { listen 80 default; ## SSL directives might go here listen 443 default ssl; ssl_certificate /etc/ssl/domain.com.crt; ssl_certificate_key /etc/ssl/domain.key; server_name www.domain.com *.domain.com; ## Domain is here twice so server_name_in_redirect will favour the www root /path/to/root/; location / { index index.html index.php; ## Allow a static html file to be shown first try_files $uri $uri/ @handler; ## If missing pass the URI to Magento's front handler expires 30d; ## Assume all files are cachable } location /phpmyadmin { auth_basic "Restricted Access"; auth_basic_user_file htpasswd_file; alias /path/to/phpmyadmin/; index index.php; ## Allow a static html file to be shown first try_files $uri $uri/ @fastcgi; } ## These locations would be hidden by .htaccess normally location ^~ /app/ { deny all; } location ^~ /includes/ { deny all; } location ^~ /lib/ { deny all; } location ^~ /media/downloadable/ { deny all; } location ^~ /pkginfo/ { deny all; } location ^~ /report/config.xml { deny all; } location ^~ /var/ { deny all; } location /var/export/ { ## Allow admins only to view export folder auth_basic "Restricted"; ## Message shown in login window auth_basic_user_file htpasswd; ## See /etc/nginx/htpassword autoindex on; } location /. { ## Disable .htaccess and other hidden files return 404; } location @handler { ## Magento uses a common front handler rewrite / /index.php; } location ~ .php/ { ## Forward paths like /js/index.php/x.js to relevant handler rewrite ^(.*.php)/ $1 last; } location ~ .php$ { ## Execute PHP scripts if (!-e $request_filename) { rewrite / /index.php last; } ## Catch 404s that try_files miss expires off; ## Do not cache dynamic content fastcgi_pass 127.0.0.1:9000; fastcgi_param HTTPS $fastcgi_https; fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name; fastcgi_param MAGE_RUN_CODE default; ## Store code is defined in administration > Configuration > Manage Stores fastcgi_param MAGE_RUN_TYPE store; include fastcgi_params; ## See /etc/nginx/fastcgi_params } } 

The relevant parts of our /etc/nginx/conf.d file:

http { include /etc/nginx/mime.types; default_type application/octet-stream;

log_format main '$remote_addr - $remote_user [$time_local] "$request" ' '$status $body_bytes_sent "$http_referer" ' '"$http_user_agent" "$http_x_forwarded_for"'; access_log /var/log/nginx/access.log main; sendfile on; autoindex off; map $scheme $fastcgi_https { ## Detect when HTTPS is used default off; https on; } #tcp_nopush on; keepalive_timeout 10; gzip on; gzip_comp_level 2; gzip_proxied any; gzip_types text/plain text/html text/css application/x-javascript text/xml application/xml application/xml+rss text/javascript; # # The default server # server { listen 80; server_name _; # Load config files from the /etc/nginx/conf.d directory include /etc/nginx/conf.d/*.conf; 

}

Any ideas what we can do to get this POST condition working?

1 Answer 1

2

Your /etc/nginx/fastcgi_params file should contain (among several other things) the following line:

fastcgi_param REQUEST_METHOD $request_method; 

This is as shipped. Check to make sure it wasn't altered.

In my own PHP scripts I take a very simple shortcut to check if it was a POST request:

if ($_POST) { # Process some POST variables } # Display the web page 

You must log in to answer this question.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.