我想用URL
来驱动我的环境(dev,prod)myuser.ENV.domain (eg : foo.dev.test.com or foo.prod.test.com)
所以我决定在.htaccess文件中进行一些更改
DirectoryIndex app.php
<IfModule mod_negotiation.c>
Options -MultiViews
</IfModule>
<IfModule mod_rewrite.c>
RewriteEngine On
RewriteCond %{SERVER_NAME} mydevserver.priv?$
RewriteCond %{HTTP_HOST} ^(.+)\.(.+)\.(mydevserver.priv)?(:80)?$
RewriteRule .* - [E=SF_USER:%1,E=SF_ENV:%2,E=SF_SERVER:%3,QSA,L]
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ %{ENV:BASE}/app.php [L]
</IfModule>
接下来,我在app.php中做了一些更改
<?php
ini_set('memory_limit', '256M');
umask(0000);
use Symfony\Component\Debug\Debug;
use Symfony\Component\HttpFoundation\Request;
$env = filter_input(INPUT_SERVER, 'SF_ENV') ?: $_SERVER['SF_ENV'];
/** @var \Composer\Autoload\ClassLoader $loader */
$loader = require __DIR__ . '/../app/autoload.php';
if ('dev' === $env) {
$debug = true;
Debug::enable();
} elseif ('prod' === $env) {
include_once __DIR__ . '/../var/bootstrap.php.cache';
$debug = false;
} else {
throw new \Exception('Environment Not handled');
}
$kernel = new AppKernel($env, $debug);
$kernel->loadClassCache();
//$kernel = new AppCache($kernel);
// When using the HttpCache, you need to call the method in your front controller instead of relying on the configuration parameter
//Request::enableHttpMethodParameterOverride();
$request = Request::createFromGlobals();
$response = $kernel->handle($request);
$response->send();
$kernel->terminate($request, $response);
当我继续使用prod URL时,我有Symfony 3的默认成功页面,没有调试工具栏。
当我使用dev URL时,我有默认的成功页面,但我没有调试工具栏。 _wdt&amp;有一个404错误。 _profiler routes。
但是,如果我继续使用app_dev.php文件,我有调试工具栏。
我可能会想念一件小事,但我无法弄清楚。
我做了一个快速测试,将app.php重命名为index.php并删除了DirectoryIndex,但它没有任何改变。
如果我在$ env var上使用var_dump,它会从环境变量SF_ENV获得良好的环境。
有人可以帮助我吗?
答案 0 :(得分:0)
不确定究竟有什么问题,但设置虚拟主机可能是提供相同结果的更简单的解决方案。
您拥有Symfony virtual host文档中所需的所有设置。如果您选择使用Apache 2.4+,请按照mod_php设置进行操作。此版本的Apache服务器也已替换
订单允许,拒绝 允许全部
使用:
要求全部授予
您还有关于如何设置虚拟主机的youtube视频教程。以下是我根据上述文档制作的虚拟主机之一的示例,vhost用于测试的简单symfony应用程序:
<VirtualHost *:80>
ServerName www.login.com
DocumentRoot "C:/xampp/htdocs/symfUser/web"
<Directory "C:/xampp/htdocs/symfUser/web">
Require all granted
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ app.php [QSA,L]
</IfModule>
</Directory>
<Directory "C:/xampp/htdocs/symfUser/web/bundles">
<IfModule mod_rewrite.c>
RewriteEngine Off
</IfModule>
</Directory>