我刚刚加入了一个团队,该团队从事基于Symphony和Silex的项目(作为PHP框架)和作曲者(作为包管理器)。该系统目前正在生产中使用,并且运行良好。
所以有什么问题?当我在本地运行时,该应用程序不幸失败:
Fatal error: Call to a member function get() on a non-object in /Library/WebServer/wsmcrm/session.php on line 9
我做了什么
当我访问localhost /时,应用程序会立即失败,但上面的例外除外。这是非常罕见的,因为问题出在此行上:
<?php
use Symfony\Component\HttpFoundation\Request;
use Symfony\Component\HttpFoundation\RedirectResponse;
use OMG\User;
$session = $app['controllers_factory'];
/*This is line 9 */ $session->get('/', function(Silex\Application $app) {
这告诉我$ session为空,这意味着'controllers_factory'不是$ app中的数组项,这也很奇怪,因为就像我说的那样,它实际上可以在生产中进行任何其他更改。
本质上,我们在这里从index.php调用session.php:
return new RedirectResponse('/session/login');
只要本地没有存储身份验证cookie,并且/ session与此匹配:
$app->mount('/session', include 'session.php');
我只是不太确定到底是什么问题,但是我确定这与我的本地环境设置有关。
有任何想法吗?
这是完整的httpd.conf,以备您四处查看。
就其价值而言,这是我的本地配置存在的问题。
最初的请求URI为“ /”,并触发了Apache服务index.php。但是,当index重定向到“ / session / *”时,apache直接提供“ session.php”-因此,为什么“ $ app”为null,而不是提供index.php并让他通过以下方式挂载“ session.php”框架。
我必须编辑.htaccess并添加:
<IfModule mod_rewrite.c>
Options -MultiViews
RewriteEngine On
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^ index.php [L]
</IfModule>
这样所有请求都通过index.php进行处理,而不是直接为控制器提供服务。
这样就解决了我的问题。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句