在VPS上托管的Slim 3无法找到模板目录

时间:2017-05-27 11:44:41

标签: .htaccess location hosting slim vps

今天我在我的网络服务器(VPS)上配置了我的苗条应用程序。 我构建了项目,以便我的public_html包含Slim的索引文件和.htaccess文件,后台文件位于文件夹之前(/../public_html)(我想这是正确的配置,因为该应用的"公共"文件位于" public"文件夹中。 可悲的是我错了,如果我浏览到我的网站,我会得到一个很小的错误,说模板:

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

这是奇怪的原因我说我的isettings.php文件在一个BEFORE public_html中找到templates文件夹,如我的文件中所述:

// 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

有什么建议吗?我遵循了正确的逻辑?

1 个答案:

答案 0 :(得分:1)

我是Slim的新手,所以如果这个答案很幼稚或做错事,我会道歉。

我遇到了同样的问题 - 我创建的应用程序在本地工作(使用php -S localhost:8080 -t public public/index.php)。当我将它移动到VPS时,它停止工作,因为它正在public目录中查找模板目录。

我通过像这样初始化Twig来修复它(在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"初始化Twig,而不是调用template_path设置。