2017-05-27 61 views
1

今天,我在我的Web服務器(VPS)上配置了我的瘦身應用程序。 我構建了項目,以便我的public_html包含Slim的索引文件和.htaccess文件,並且後臺文件位於(/../public_html)之前的文件夾中(我想這是自「公共」文件的正確配置。應用程序是在「公共」文件夾 可悲的是我錯了,如果我瀏覽到我的網站,我得到一個苗條的錯誤說的模板:VPS上的Slim 3無法找到模板目錄

The "templates" directory does not exist ("/var/www/mywebsitefolder/public_html/templates"). 

這是奇怪的,因爲我說我的isettings.php文件定位模板文件夾內的一個BEFORE public_html,如我的文件所述:

// Renderer settings 
    'renderer' => [ 
     'template_path' => __DIR__ . '/../templates/', 
    ], 

所以它應該往裏/../templates,但它沒有發生,也這就是我的配置裏面的public_html我的.htaccess其中的index.php是:

RewriteEngine on 
RewriteCond %{REQUEST_FILENAME} !-f 
RewriteCond %{REQUEST_FILENAME} !-d 
RewriteRule^index.php [QSA,L] 

和個人文件夾結構(也許它可以幫助)

- **my website apache folder** 
- Controllers 
- Models 
- src 
- templates 
- vendor 
- public_html 
    - css 
    - imgs 
    - js 
    - index.php 
    - .htaccess 

有什麼建議嗎?我遵循正確的邏輯?

+0

我最近也碰到過這個。你使用的是什麼模板引擎? –

+0

@ChrisHerbert Twig – K3nzie

回答

1

我是新來的苗條,所以我很抱歉,如果這個答案是天真的或做錯的方式。

我有同樣的問題 - 我創建的應用程序在本地工作(使用php -S localhost:8080 -t public public/index.php)。當我將它移動到VPS時,它停止工作,因爲它正在尋找public目錄中的模板目錄。

我固定它通過初始化的樹枝像這樣(在src/dependencies.php):

// Register component on container 
$container['view'] = function ($container) { 

    $view = new \Slim\Views\Twig(
     $container->get('settings')['renderer']['template_path'] 
    ); 

    // Removed more Twig setup code 

    return $view; 
}; 

本來嫩枝正在以字符串"templates"而不是對template_path呼叫設置初始化。

+0

令人驚歎!完全沒有想到這一點,謝謝,我想我會標記這是正確的,我實際上已經通過將templates目錄移動到public來解決此問題,並且一切正常,但是您的方法更「乾淨」。 – K3nzie