使用nginx的phalcon php“invo sample application”

时间:2014-02-05 16:30:43

标签: php nginx phalcon

我尝试通过测试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/invowebroot/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

访问了它

3 个答案:

答案 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