【问题标题】:Unable to run Symfony 2.0.10 application with PHP 5.6无法使用 PHP 5.6 运行 Symfony 2.0.10 应用程序
【发布时间】:2016-12-01 18:41:49
【问题描述】:

我正在尝试使用 PHP 内置服务器或 Apache2 服务器在 Windows 上运行 Symfony PHP 应用程序。 Symfony 版本是 2.0.10,PHP 版本是 5.6.28。

当我使用指向 Symfony 应用程序 web 目录的 Apache 服务器时,在浏览器中打开站点只列出目录内容,而不是运行应用程序。当我使用在同一位置(项目文件夹的 web 目录)启动的 PHP 内置服务器时,在浏览器站点根目录中打开会导致 404 resource not found 错误,因此 Symfony 应用程序没有启动。当我尝试使用控制台命令php app/console server:run 启动 symfony 应用程序时,出现错误,说 server:start 命令不存在。我无法让 Symfony 主页显示(意味着启动应用程序)。 Apache2 httpd.conf 文件内容为:

ServerRoot "c:/Apache24"
Listen 80
LoadModule access_compat_module modules/mod_access_compat.so
LoadModule actions_module modules/mod_actions.so
LoadModule alias_module modules/mod_alias.so
LoadModule allowmethods_module modules/mod_allowmethods.so
LoadModule asis_module modules/mod_asis.so
LoadModule auth_basic_module modules/mod_auth_basic.so
LoadModule authn_core_module modules/mod_authn_core.so
LoadModule authn_file_module modules/mod_authn_file.so
LoadModule authz_core_module modules/mod_authz_core.so
LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
LoadModule authz_host_module modules/mod_authz_host.so
LoadModule authz_user_module modules/mod_authz_user.so
LoadModule autoindex_module modules/mod_autoindex.so
LoadModule cgi_module modules/mod_cgi.so
LoadModule dir_module modules/mod_dir.so
LoadModule env_module modules/mod_env.so
LoadModule include_module modules/mod_include.so
LoadModule isapi_module modules/mod_isapi.so
LoadModule log_config_module modules/mod_log_config.so
LoadModule mime_module modules/mod_mime.so
LoadModule negotiation_module modules/mod_negotiation.so
LoadModule setenvif_module modules/mod_setenvif.so
LoadModule php5_module C:/PHP/php5apache2_4.dll
<IfModule php5_module>
    DirectoryIndex index.html index.php
    AddHandler application/x-httpd-php .php
    PHPIniDir "C:/PHP"
</IfModule>
DocumentRoot "C:\projects\MySymfonyApp\web"
<Directory "C:\projects\MySymfonyApp\web">   
    DirectoryIndex app.php  
    Options Indexes FollowSymLinks
    AllowOverride None
    Require all granted
</Directory>
<IfModule dir_module>
    DirectoryIndex index.html
</IfModule> 

【问题讨论】:

  • “说 server:start 命令不存在”This was added in Symfony 2.6.
  • “在浏览器中打开站点只列出目录内容”,这意味着您的服务器配置不正确。与 Symfony 无关。

标签: php apache symfony


【解决方案1】:

根据https://packagist.org/packages/symfony/symfony#v2.0.10

php 5.6 有效

使用 composer 来管理你所有的项目依赖...

要初始化 symfony,别忘了:

php app/console --env=prod cache:clear        
php app/console --env=prod cache:warmup              
php app/console --env=prod assets:install --symlink web               
php app/console --env=prod assetic:dump 

关于 apache/httpd 更喜欢使用 yum/apt-get 来管理所有 php 模块。

你能发布你的 httpd error_log 吗?更准确。

【讨论】:

  • 问题是我没有正确配置apache路由。在 Apache httpd.conf 文件中,我缺少此部分:LoadModule rewrite_module modules/mod_rewrite.so
  • 问题已解决?
  • 是的,在为路由启用和配置 mod_rewrite 后,一切正常。感谢您的建议,我将使用它们来准备 symfony。
【解决方案2】:

不再支持 Symfony 版本 2.0.10。您可能需要升级您的版本:

https://symfony.com/doc/current/setup.html

你可以运行:

composer update

只是更新。 2.0.10 版本真的太旧了,所以我不确定它是否可以工作。

【讨论】:

  • 不幸的是,我无法更改 Symfony 版本,即现有的稳定系统,我只是在 Windows 上本地运行它时遇到问题。
  • 您可以编辑您的帖子并显示 Apache 配置吗?
  • 添加了 Apache 配置。但现在我在解决这个问题上做了一点点。当我在浏览器中请求站点根目录时,它会将我重定向到正确的位置,但返回 404 not found 错误。例如,当我请求 localhost 时,它会将我正确重定向到某个位置,localhost/dir/myresource 但 Apache 返回 404 而不是发送到 PHP 进行处理。可能 apache 路由不起作用或未配置。我该如何解决? Apache 路由配置,发送所有请求由 PHP symfony 处理?
  • 好的,在 apache httpd.conf 文件中启用路由模块后一切正常! LoadModule rewrite_module modules/mod_rewrite.so
猜你喜欢
  • 1970-01-01
  • 2019-01-08
  • 2013-02-20
  • 1970-01-01
  • 2018-03-15
  • 1970-01-01
  • 2018-12-24
  • 1970-01-01
  • 2019-04-08
相关资源
最近更新 更多