我花了6个多小时才解决这个问题。
我有127.0.0.1:9000的nginx / 1.2.7服务器和php-fpm。 我有基本的nginx配置:
server
{
listen 80;
server_name example.org www.example.org;
index index.php index.html;
access_log /srv/www/example.org/logs/access.log;
error_log /srv/www/example.org/logs/error.log;
location /
{
root /var/www/html/example.org/public_html;
try_files $uri $uri/ /index.php;
location ~ \.php$
{
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
它工作正常!所有的php文件都像他们一样工作。
但我有一些单独的yii项目,需要在主根文件夹以外执行。 我在底部添加了这个配置:
/srv/www/example.org/yiitest - 它是yiitest项目的根目录(包含“protected”文件夹及其他内容)。
location /yiitest
{
root /srv/www/example.org/yiitest;
try_files $uri $uri/ /index.php?$args;
location ~ \.php$
{
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
fastcgi_pass 127.0.0.1:9000;
fastcgi_index index.php;
include fastcgi_params;
}
}
但它不起作用。我有'找不到档案'。 最大限度的我可以获得,它是:example.org/yiitest/主页工作正常。 如果我去example.org/yiitest/site/contact/我将找不到文件。 :(
我无法理解,如何在服务器的单独子目录中正确设置yii-project。
答案 0 :(得分:1)
创建符号链接
cd /var/www/html/example.org/public_html
ln -s ../yiitest/public yiitest
配置nginx
root /var/www/html/example.org/public_html;
location / {
...
}
location /yiitest/ {
index index.php;
# front end
if (!-e $request_filename) {
rewrite ^(.*)$ /yiitest/index.php last;
break;
}
}
location ~ \.php$ {
fastcgi_pass 127.0.0.1: 9000;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
fastcgi_param PATH_INFO $fastcgi_script_name;
include fastcgi_params;
}
然后配置yii框架。您应该在配置中设置'basePath':
<?php
return array(
'basePath' => 'yiitest',
...
);