2014-02-05 18 views
0

我努力學習,並通過測試INVO sample application爾康PHP「INVO示例應用程序」使用nginx的

看來,本教程不包括nginx的配置進行測試,讓我得到了一些困難,以測試樣品配置爾康應用。

我使用nginx的作爲Web服務器,我把nginx的配置從here

這裏是我的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

,我應該能夠以這樣的URL來訪問它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

但這意味着我從url訪問它http://local.phalcon.dev不是http://local.phalcon.dev/invo

+0

所以...你有沒有想通? –

+0

@IanBytchek還沒有,我想從'http:// local.phalcon.dev/invo'訪問它,我只能從'http://local.phalcon訪問它.dev'這不是我想要的 – ivantedja

回答

0

要通過http://local.phalcon.dev/invo而不是http://local.phalcon.dev訪問它,現在只需要configure the routing即可。我覺得你的情況,你只需要設置基本URI按照this example

//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其他爾康應用程序嗎?如果是這種情況,那麼它將不起作用。所有請求都被轉發到index.php,這就排除了做什麼。您可以創建multi-module app,但不能有不同的應用程序坐在同一個域上(沒有嚴重的痛苦)。

+0

實際上我只是試着學習,如何在我的情況下爲phalcon配置nginx(它僅用於學習目的),它與你提到的那個教程是同一個問題,它不是路由到正確的路徑。所以,我想配置我的nginx正常工作,無需更改我的網絡文件(php文件)。我嘗試了Apache和當然.htacc正確的重定向路線 – ivantedja

+0

我正在使用nginx - 它工作得很好。我認爲這個問題就是一個例子,它看起來已經過時,並且不適用。我剛剛在本地嘗試了一下,並且稍微調整了一下,但是使用/ invo /作爲基本路徑需要進行一些調整。爲了實現這一點,我會先閱讀關於路由的內容。 –

+0

代碼在評論中混亂了。這裏是index的[gist](https://gist.github.com/ianbytchek/0fa3bd1abcaef4b127bd)。你可以嘗試去http://invo.local/some_path/並實現你想要的東西。我希望。 :) –

0

應通過網址提供的唯一目錄是公開的。你回家direcotry必須以公共像結尾:

/用戶/ mylocal/WWW /費爾康/ 公共

,你將能夠使用的基地DIR /:

$di->set('url', function(){ 
    $url = new \Phalcon\Mvc\Url(); 
    $url->setBaseUri('/'); 
    return $url; 
}); 

的當然,你可以使用任何名字作爲你的公共目錄,但不推薦,因爲如果你想使用phalcon的devtools,他們正在與家庭目錄稱爲「公共」

+0

是不是他所做的? (PS:我可以通過將$ root_path改爲/ Users/mylocal/www/phalcon/current/invoice/public來訪問它) –

+0

但是你說得對,問題出在[配置文件](https:/ /github.com/phalcon/invo/blob/master/app/config/config.ini)。將其設置爲「/」即可。但它不能通過/ invo訪問 - 我的資源被破壞了。 –

+0

它適用於Apache,我認爲必須有一定的方法來正確配置該教程的nginx而不更改任何文件 – ivantedja

0

請檢查app/config/config.ini文件。有一個「baseUri」部分。
1. nginx的root_path應該是「根目錄/ INVO /公共
2.爾康代碼:應用程序/配置/ config.ini文件 - >基本URI =/
3.網址:local.phalcon.dev

+0

看到我的問題結束,我想從http://local.phalcon.dev/invo訪問它' – ivantedja