【问题标题】:HTTP 500 Error in Symfony 3Symfony 3 中的 HTTP 500 错误
【发布时间】:2017-07-13 20:57:14
【问题描述】:

我使用symfony 3 在我的localhost 上创建了一个应用程序。东西在我的本地主机上运行良好。现在我的主要问题是将它转移到我的共享主机(cPanel)。将文件移动到public_html 文件夹,然后我将.exe、bin、src、var 等文件夹移动到父文件夹(包含public_html 文件夹的文件夹),同时离开' public_html 中的 web' 文件夹。然后我将所有内容从“web”文件夹(位于public_html 文件夹内)移到public_html 文件夹中。使我具有以下目录结构:

cpanel-root-directory<br>
---/app<br>
---/bin<br>
---/src<br>
---/tests<br>
---/var<br>
---/vendor<br>
---/public_html<br>
------/bundles<br>
------/css<br>
------/dist<br>
------/fonts<br>
------/img<br>
------/js<br>
------/plugins<br>
------/uploads<br>
------.htaccess<br>
------app.php<br>
------app_dev.php<br>
------apple-touch-icon.png<br>
------config.php<br>
------robots.txt<br>
<br>

当我转到域名时,我不断收到这个烦人的HTTP 500 错误。然后在localhost 和服务器上(在不同的时间),我创建了一个全新的symfony 项目,将其转储到服务器中,并得到“欢迎使用 Symfony 3”页面。但是,当我尝试放置控制器文件并转到其中定义的路由时(我使用 Sensio 包中的注释来定义路由),我收到 HTTP 500 错误。然后,在工作的默认控制器中,我尝试定义一个新动作“testAction”。当我转到测试操作的路线时,我仍然收到HTTP 500 错误,但是转到'/' 路线,我正确地看到了symfony 欢迎页面。

我的客户已经看到这些东西在我的 localhost 上运行良好,但现在将其移至服务器是个问题。

【问题讨论】:

  • 已更新!!!请我检查一下 www.mydomain,org/app_dev.php 并且它运行良好,但如果我只是去 www.mydomain.org 它会给我 HTTP 500 错误。
  • 我还必须先注释掉 app_dev.php 文件中的检查,然后才能让它工作。 /*if (isset($_SERVER['HTTP_CLIENT_IP']) || isset($_SERVER['HTTP_X_FORWARDED_FOR']) || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', ': :1']) || php_sapi_name() === 'cli-server') ) { header('HTTP/1.0 403 Forbidden'); exit('您无权访问此文件。请检查 '.basename(FILE).' 了解更多信息。'); }*/

标签: php .htaccess symfony


【解决方案1】:

如果可以(有权访问),请保留您的网络目录,然后将 public_html 设置为指向您的网络目录的符号链接。

如果您需要更改“网络”目录的名称,您需要按照以下说明操作: http://symfony.com/doc/current/configuration/override_dir_structure.html

【讨论】:

  • 那是不是.....得到了同样的 500 错误。有趣的是它可以在 www.mydomain.org/app_dev.php 工作(那是在我注释掉它之后)但是当我直接访问 www.mydomain.org 时我仍然收到 HTTP 500 错误
  • 如果在使用 /app_dev.php 时一切正常,这可能是 Dan 向您提到的缓存错误。继续删除 var/cache/prod 并重试。
  • 那和它还是一样的东西删除 var/cache + var/logs + var/sessions 目录是否安全?
  • 是的,但我怀疑这会解决您的问题。您能否尝试在您的主机/cpanel 中查看错误日志以获得更具描述性的错误消息?
【解决方案2】:

呃,我想那是因为,你现在在线,所以你需要清除 prod 环境的缓存:

$ php bin/console cache:clear --env=prod

但是你说你在共享主机上,所以除非你有一些可用的工具来访问终端(并运行上面的命令),否则你需要手动删除var/cache/prod 目录(如果存在)。

或者如果这不起作用,我通常根本不上传var/cache + var/logs + var/sessions 目录,而是手动将它们创建为空目录,然后让 Symfony 完成它的工作默认情况下。

LE

也许您还有另一个问题,而您已经解决了缓存问题。 因此,要检查您的应用程序是否有问题,请启用dev 模式(app_dev.php),方法是在本地修改您的public_html/app_dev.php 文件,并注释掉这些行:

if (isset($_SERVER['HTTP_CLIENT_IP'])
    || isset($_SERVER['HTTP_X_FORWARDED_FOR'])
    || !(in_array(@$_SERVER['REMOTE_ADDR'], ['127.0.0.1', '::1']) || php_sapi_name() === 'cli-server')
) {
    header('HTTP/1.0 403 Forbidden');
    exit('You are not allowed to access this file. Check '.basename(__FILE__).' for more information.');
}

然后,把这个文件复制到服务器上,然后访问前面有app_dev.php的路由,看看有没有错误(eg):

http://www.domain.com/app_dev.php/existing_route

完成后别忘了把app_dev.php里面的代码去掉注释,重新上传服务器上的文件。

【讨论】:

  • 按照你说的删除了目录但是还是报500错误
  • 我可以继续删除 var/cache + var/logs + var/sessions 目录吗?
  • @yommie 我认为不需要删除日志和会话。我通常只删除var/cache/ 中的prod 目录。而且我从来没有遇到过问题。
  • @yommie 但也许你还有另一个问题。要检查它,请参阅我的 LE。
  • 咬我,我的路由在 app_dev.php 中完美运行,上传它没有 var/cache + var/logs + var/sessions 目录,而是将它们创建为空目录。仍然收到错误 500。好吧,然后我检查了日志,我发现了这个 [2017-02-24 14:36:51] request.INFO: Matched route "homepage". {"route":"homepage","route_parameters":{"_controller":"AppBundle\\Controller\\DefaultController::indexAction","_route":"homepage"},"request_uri":"http://veveedcash.org/","method":"GET"} [] 老实说,我的应用程序中没有定义这样的路由(我删除了那个默认控制器)@Strnm
【解决方案3】:

你应该从Symfony documentation查看这一段

这部分似乎准确地描述了您的问题:

一些共享主机有一个 public_html web 目录根。将 web 目录从 web 重命名为 public_html 是让 Symfony 项目在共享主机上运行的一种方法。另一种方法是将您的应用程序部署到 Web 根目录之外的目录,删除您的 public_html 目录,然后将其替换为项目中指向 Web 的符号链接。

【讨论】:

  • 也这样做了,但我仍然得到相同的结果。有趣的是,它可以在 www.mydomain.org/app_dev.php 工作(那是在我注释掉它之后)但是当我直接访问 www.mydomain.org 时我仍然收到 HTTP 500 错误
  • 您是否检查了您的虚拟主机目标 app.php 而不是 index.php ?您是否检查过您处于生产环境而不是开发环境中?你试过 www.mydomain.org/app.php/yourRoute 吗?
猜你喜欢
  • 1970-01-01
  • 2018-02-07
  • 1970-01-01
  • 2021-12-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多