【问题标题】:Symfony2 app.php works but not app_dev.phpSymfony2 app.php 有效,但 app_dev.php 无效
【发布时间】:2013-03-15 11:52:21
【问题描述】:

我已将 Symfony2 项目部署到我的开发服务器并希望运行开发环境。

如果我使用 /app.php,一切都运行良好,但如果我尝试 app_dev.php,我会收到 404 错误:

在此服务器上找不到请求的 URL /app_dev.php。

以下是我的 .htaccess 文件的副本:

<IfModule mod_rewrite.c>
    Options +FollowSymlinks
    RewriteEngine On

    # Explicitly disable rewriting for front controllers
    RewriteRule ^app_dev.php - [L]
    RewriteRule ^app.php - [L]

    RewriteCond %{REQUEST_FILENAME} !-f

    # Change below before deploying to production
    #RewriteRule ^(.*)$ app.php [QSA,L]
    RewriteRule ^(.*)$ app_dev.php [QSA,L]
</IfModule>

它在我的本地机器上运行良好,只是在我的开发服务器上不行,有什么想法吗?

我的 /cache 和 /logs 目录都有 777 权限,并且归 www-data 所有:

drwxrwxrwx+ 4 www-data www-data 4096 Mar 15 11:46 cache
drwxrwxrwx+ 2 www-data www-data 4096 Mar 15 11:05 logs

这些目录中的dev和prod完全相同。

【问题讨论】:

  • 您是尝试从服务器本身还是从本地计算机打开开发服务器中的开发环境?
  • 我正在从本地计算机浏览到托管在开发服务器上的开发环境 (app_dev.php)

标签: caching symfony deployment permissions capifony


【解决方案1】:

检查您的 app_dev.php,它有一个限制,即拒绝从服务器本身以外的其他计算机访问开发环境。

这是出于安全原因,如果您部署到生产服务器并且用户可以访问开发环境,那么他/她可以了解您的应用程序的很多信息。

// This check prevents access to debug front controllers that are deployed by accident to production servers.
// Feel free to remove this, extend it, or make something more sophisticated.
if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !in_array(@$_SERVER['REMOTE_ADDR'], array('127.0.0.1', 'fe80::1', '::1'))
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

您必须将您的 IP 添加到该数组中,或者删除整个内容(我不建议这样做)。

永远记得将 dev 变量传递给 AppKernel。 $kernel = new AppKernel('dev', true);

【讨论】:

  • 谢谢@xr09。我有 3 个外部服务器,开发、登台和生产,您是否建议我在我的开发服务器上使用开发环境?
  • @user1961082 在您的开发服务器中是可以的(毕竟它是为此而设计的),但请记住在部署时设置规则以避免生产中的事故。
  • 所以本地机器和开发服务器的开发环境,测试暂存和生产生产?我正在使用 Capifony 和 Capistrano 多阶段扩展,所以我可以在我的 development.rb 脚本中设置它还是必须直接在 app_dev.php 中进行设置?
  • 您应该编辑您的 app_dev.php 以添加您的本地 IP,是的 dev 用于本地和开发。服务器,测试几乎相同,没有调试工具栏和详细日志记录,检查 app/config/config[dev|test].yml 并检查差异以查看每个环境中启用的内容。
  • 好的,我已经意识到 app_dev.php 没有被部署。它在我在 github 的 GIT 存储库中,但是当我出于某种原因使用 Capifony 进行部署时,它没有从 github 中提取这个文件?!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-06-15
  • 1970-01-01
  • 2013-05-17
  • 2015-09-25
  • 2017-01-10
  • 2015-11-19
相关资源
最近更新 更多