2017-02-23 76 views
1

我使用symfony 3在我的localhost上创建了一个应用程序。东西在我的本地主机上工作得很好。现在我的主要问题是将其移动到我的共享主机(cPanel)。移动文件到public_html文件夹,然后让我感动的.exebinsrcvar等文件夹的父文件夹(含public_html文件夹中的文件夹),同时留下了“网络”文件夹中的public_html。然后,我将“web”文件夹(位于public_html文件夹内)中的所有内容移动到public_html文件夹中。让我有以下目录结构:Symfony 3中的HTTP 500错误

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上运行得非常好,但现在将它移动到服务器是个问题。

+0

UPDATED !!!请检查www.mydomain,org/app_dev.php,它的工作原理是完美的,但如果我只是去www.mydomain.org,它会给我HTTP 500错误。 – yommie

+0

我还必须在app_dev.php文件中注释掉这些检查,然后才能使其工作。 /*如果(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__)''以获取更多信息。'); } */ – yommie

回答

1

如果您可以(有权访问),只需保持您的网页目录,然后使public_html符号链接到您的网络目录。

如果你需要改变你的“网”目录的名称,您需要按照此说明: http://symfony.com/doc/current/configuration/override_dir_structure.html

+0

那个.....得到了同样的500错误。有趣的是,它在www.mydomain.org/app_dev.php(这是我注释后,检查它),但我仍然得到HTTP 500错误,当我直接去www.mydomain.org – yommie

+0

如果使用/ app_dev.php一切正常,这可能是Dan提到的一个缓存错误。继续并删除var/cache/prod并重试。 – Strnm

+0

这是否和它仍然是一样的东西 删除var/cache + var/logs + var/sessions目录是否安全? – yommie

0

嗯,我认为这是因为,现在,你是否在线,所以你需要清除缓存督促环境:

$ 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在前面,并查看是否有错误(例如):

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

设置完毕后,不要忘了取消注释里面app_dev.php代码,并重新上传服务器上的文件。

+0

正如你所说删除了目录,但它仍然会抛出500错误 – yommie

+0

我可以继续并删除var/cache + var/logs + var/sessions目录吗? – yommie

+0

@yommie我想,无需删除日志和会话。我通常只删除'var/cache /'里的'prod'目录。我从来没有过probs。 –

1

您应该Symfony documentation

检查本段这部分似乎准确地描述你的问题:

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

+0

做到了这一点,但我仍然得到相同的结果。有趣的寿,它在www.mydomain.org/app_dev.php(这是我注释后,检查它),但我仍然得到HTTP 500错误,当我直接去www.mydomain.org – yommie

+0

你有没有检查你的虚拟主机目标app.php而不是index.php?你有没有检查你是在生产环境而不是发展?你尝试过www.mydomain.org/app.php/yourRoute吗? –