今天我在我的网络服务器(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
有什么建议吗?我遵循了正确的逻辑?
答案 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
设置。