Web 服务器
典型地使用前端控制器将 web 服务器接收到的 HTTP 请求汇集到一个单独的 PHP 文件。下面的文档说明了如何通知你的 web 服务器将接收到的 HTTP 请求发送到 PHP 前端控制器文件。
PHP built-in server
Run the following command in terminal to start localhost web server, assuming ./public/
is public-accessible directory with index.php
file:
php -S localhost:8080 -t ./public/
Apache 配置
确保 .htaccess
和 index.php
这两个文件位于同一个可公开访问的目录中。这个 .htaccess
文件应当包含以下代码:
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^ index.php [QSA,L]
为了保证 .htaccess
的重写(rewrite)规则能正常生效,务必确保你的 Apache 虚拟主机开启了 AllowOverride
选项。
AllowOverride All
Nginx 配置
这是一个例子,在 Nginx 虚拟主机上针对域名 example.com
的配置。它监听80端口上的入境(inbound)HTTP 连接。它假定一个PHP-FPM服务器在端口9000上运行。你需要将 server_name
, error_log
, access_log
, 和 root
这些指令修改成你自己的值。其中 root
指令是你的应用程序公共文件根目录的路径;你的 Slim 应用的 index.php
前端控制器文件应该放在这个目录中。
server {
listen 80;
server_name example.com;
index index.php;
error_log /path/to/example.error.log;
access_log /path/to/example.access.log;
root /path/to/public;
location / {
try_files $uri $uri/ /index.php$is_args$args;
}
location ~ \.php {
try_files $uri =404;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
include fastcgi_params;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param SCRIPT_NAME $fastcgi_script_name;
fastcgi_index index.php;
fastcgi_pass 127.0.0.1:9000;
}
}
HipHop Virtual Machine
Your HipHop Virtual Machine configuration file should contain this code (along with other settings you may need). Be sure you change the SourceRoot
setting to point to your Slim app’s document root directory.
Server {
SourceRoot = /path/to/public/directory
}
ServerVariables {
SCRIPT_NAME = /index.php
}
VirtualHost {
* {
Pattern = .*
RewriteRules {
* {
pattern = ^(.*)$
to = index.php/$1
qsa = true
}
}
}
}
IIS
务必确保 Web.config
和 index.php
这两个文件位于同一个可公开访问的目录中。 这个 Web.config
文件必须包含以下代码:
<?xml version="1.0" encoding="UTF-8"?>
<configuration>
<system.webServer>
<rewrite>
<rules>
<rule name="slim" patternSyntax="Wildcard">
<match url="*" />
<conditions>
<add input="{REQUEST_FILENAME}" matchType="IsFile" negate="true" />
<add input="{REQUEST_FILENAME}" matchType="IsDirectory" negate="true" />
</conditions>
<action type="Rewrite" url="index.php" />
</rule>
</rules>
</rewrite>
</system.webServer>
</configuration>
lighttpd
Your lighttpd configuration file should contain this code (along with other settings you may need). This code requires lighttpd >= 1.4.24.
url.rewrite-if-not-file = ("(.*)" => "/index.php/$0")
This assumes that Slim’s index.php
is in the root folder of your project (www root).