问题
For web servers using PHP as apache module:
AddType application/x-httpd-php .html .htm
For web servers running PHP as CGI:
AddHandler application/x-httpd-php .html .htm
I have an Nginx server and I want to run .js files and and .htm files as PHP, so I will have full PHP code inside them. Anyone know how to configure the Nginx to do this?
回答1:
Example for .htm, .html files
location ~ \.htm$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.htm;
include fastcgi.conf;
}
Example for .js files
location ~ \.js$ {
fastcgi_pass 127.0.0.1:9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
just change the extension and port settings if needed
回答2:
Passing to fastcgi didn't work for me. After a few hours of searching, I have found solution here: http://ffct.cc/solving-nginx-php-fpm-access-denied-issue/
In short:
since PHP versions > 5.3.8, to make it works, you should add directive to your php-fpm.conf:
security.limit_extensions = .php .html .js
The recognition sign is "Access denied." (notice that it's different from HTTP error 403) when accesssing .html
or .js
file.
回答3:
Simple; just change
location ~ \.php$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
to
location ~ \.(php|html|htm)$ {
root html;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
include fastcgi_params;
}
回答4:
Tom's answer with the link:
http://ffct.cc/solving-nginx-php-fpm-access-denied-issue/
was really helpful. However, I was using php with php-fpm installed on mac os yosemite w/ homebrew. Changes to the php-fpm.conf file did not take effect until I added the following to my .bash_profile:
# for homebrew php55
export PATH="/usr/local/sbin:$PATH"
For details see:
brew info php55
来源:https://stackoverflow.com/questions/8644783/html-files-as-php-in-nginx