我的网站已准备好部署,我正在尝试在线设置。
有些信息:
/www/test
目前(我当前的网站仍在/www
)。问题:
当我打开网址my-website.com/test
时,Symfony异常会告诉我No route found for "GET /test/"
,这显然意味着Symfony并不知道它位于子目录中。
我该怎么说呢?
修改
我刚刚意识到它在我访问my-website.com/test/web
时有用。
答案 0 :(得分:7)
我在这里写到:https://www.refactory-project.com/2015/11/30/install-symfony-app-in-a-subfolder-of-an-existing-site/
首先在站点根目录的同一级别上传应用程序文件夹:
[ftproot]
-- public_html
---- ...
---- ...
-- symfonyapp
---- app
---- bin
---- src
---- vendor
---- web
------ app.php
------ app_dev.php
------ ...
---- composer.json
---- composer.lock
将“web”文件夹的内容移动到所需的子文件夹,即“myapp”。
[ftproot]
-- public_html
---- ...
---- ...
---- myapp
------ app.php
------ app_dev.php
------ ...
-- symfonyapp
---- app
---- bin
---- src
---- vendor
---- composer.json
---- composer.lock
编辑文件app.php和app_dev.php并插入新的应用程序位置。
require_once __DIR__ . '/../../symfonyapp/app/bootstrap.php.cache';
require_once __DIR__ . '/../../symfonyapp/app/AppKernel.php';
使用新的网络文件夹名称编辑文件composer.json
{
...
"extra": {
...
"symfony-web-dir": "../public_html/myapp"
}
}
答案 1 :(得分:2)
如果要将Symfony应用程序部署到不允许SSH的主机,那么您可能会为自己的困难做好准备 - 例如,如果您想重建缓存,则必须手动核对您的{{1 dirs?
要直接回答您的问题,如果您的Symfony项目位于app/cache/*
,那么 Symfony的网络目录为/www/test/
,因此您需要使用以下网址:
为了完整性,请尝试分别访问显式网址 - /www/test/web
和/test/app.php
。如果您在任何一种情况下收到Symfony错误页面,您至少知道自己走在正确的道路上。
编辑#1
需要指出的一点:您的项目和配置文件可能在此部署方案中可读 - 这并不理想 - 因此您可能需要检查此操作并采取一些措施来保护此目录(如果可能)。我很欣赏这可能是一个测试部署,所以它可能不是什么大问题,但是要注意安全性总是好的:)
编辑#2
好的YMMV,我不是/test/app_dev.php
专家,但您可以将您的symfony应用部署到.htaccess
并重写/www/symfony/
URI以显示/test
; e.g:
/symfony/web/
这应该向Symfony提供所有适用的uri请求(到RewriteEngine On
# rewrite all `/test/*` uris to `symfony/web`
RewriteRule ^test(.*)$ symfony/web/$1 [L,QSA]
# direct access to /symfony dir is a 404
RewriteRule !^symfony/web/$1 - [R=404]
和/test
本身),同时限制对symfony核心文件的直接访问。
Haven没有对此进行过测试,所以这对Symfony自己的/symfony/web
的影响并不是我无法回答的问题。