我尝试通过测试INVO sample application
来学习和配置phalcon看来该教程不包含测试的nginx配置,因此我在测试示例应用程序时遇到了一些困难。
我使用nginx作为Web服务器,我从here
获取了nginx配置这是我的nginx配置:
server {
listen 80;
server_name local.phalcon.dev;
access_log /Users/mylocal/www/log/phalcon.access.log;
error_log /Users/mylocal/www/log/phalcon.error.log;
index index.php index.html index.htm;
set $root_path '/Users/mylocal/www/phalcon/current';
root $root_path;
try_files $uri $uri/ @rewrite;
location @rewrite {
rewrite ^/(.*)$ /index.php?_url=/$1;
}
location ~ \.php {
fastcgi_pass 127.0.0.1:9000;
fastcgi_index /index.php;
include /usr/local/etc/nginx/fastcgi_params;
fastcgi_split_path_info ^(.+\.php)(/.+)$;
fastcgi_param PATH_INFO $fastcgi_path_info;
fastcgi_param PATH_TRANSLATED $document_root$fastcgi_path_info;
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
location ~* ^/(css|img|js|flv|swf|download)/(.+)$ {
root $root_path;
}
location ~ /\.ht {
deny all;
}
}
看一下教程,我相信结构是这样的:
webroot
invo
app
...
public
index.php
...
...
这意味着,webroot
是我的/Users/mylocal/www/phalcon/current
我可以使用此网址http://local.phalcon.dev/invo
导致403禁止,这是可以理解的,因为我们应该重写从webroot/invo
到webroot/invo/public
的路径
我做了一些试验和错误更改配置但发现没有运气,有人可以帮我配置该教程的nginx配置吗? (这意味着从http://local.phalcon.dev/invo
)
PS:
我可以通过将$root_path
更改为/Users/mylocal/www/phalcon/current/invoice/public
并将$url->setBaseUri($config->application->baseUri);
更改为$url->setBaseUri('/');
invo/public/index.php
但这意味着我从网址http://local.phalcon.dev
NOT http://local.phalcon.dev/invo
答案 0 :(得分:0)
要通过http://local.phalcon.dev/invo代替http://local.phalcon.dev来访问它,您现在需要做的就是configure the routing。我认为在您的情况下,您只需根据this example设置基本uri:
//Setup a base URI so that all generated URIs include the "tutorial" folder
$di->set('url', function(){
$url = new \Phalcon\Mvc\Url();
$url->setBaseUri('/tutorial/');
return $url;
});
我也觉得您还想将http://local.phalcon.dev用于其他Phalcon应用程序?如果是这样,那么它将无法工作。所有请求都转发到index.php,后者排除了该做什么。您可以创建multi-module app,但不能让不同的应用程序位于同一个域中(没有严重的痛苦)。
答案 1 :(得分:0)
唯一应该通过网址提供的目录是公开的。你家的指挥必须以公开的方式结束:
/用户/ mylocal /网络/多尔康/ 公开强>
您将能够使用/:
的基础目录$di->set('url', function(){
$url = new \Phalcon\Mvc\Url();
$url->setBaseUri('/');
return $url;
});
当然你可以使用你公共目录的任何名称,但不推荐,因为如果你想使用phalcon的devtools,他们正在使用名为“public”的家庭目录
答案 2 :(得分:0)
请检查app / config / config.ini文件。有一个" baseUri"节。
1. nginx root_path应为" webroot / invo / public
2. phalcon代码:app / config / config.ini - > baseUri = /
3. url:local.phalcon.dev