我想测试我的项目的新设计而不关闭原始设计。 我将整个源目录的副本复制到了新目录。我准备了子域名和目录名如下(这是共享主机):
<pre>
http://project.mydomain.com/
/public/user1/project/
http://project1.mydomain.com
/public/user1/project1/
</pre>
我在localhost上做的一样(Windows,Apache2.4,php 5.6)。只需将“1”添加到新目录名称并复制源目录的所有内容。 在localhost上,两个“站点”都可以解决任何问题。
但是在共享主机上复制的网站工作正常,直到我尝试使用重定向控件插件。结果我只看到空白页面。它出现在我的所有14个模块中以及我使用过的任何路径中。
示例电话:
<pre>
public function fakeAction()
{
if ( $this->getRequest()->isPost() )
{
return $this->redirect()->toRoute('main');
}
return $this->redirect()->toRoute('login');
}
</pre>
,其中'main'路由配置为:
<pre>
return [
'router' => [
'routes' => [
'main' => [
'type' => Literal::class,
'options' => [
'route' => '/',
'defaults' => [
'controller' => Controller\MainController::class,
'action' => 'index'
]
]
],
</pre>
其他几个事实:
我在Application模块中只有一个onBootsrtap()方法(13个其他模块只不过是Module.php中的getConfig()):
public function onBootstrap ( MvcEvent $event ) { $application = $event->getApplication(); $serviceManager = $application->getServiceManager(); $sessionManager = $serviceManager->get( SessionManager::class ); $sessionManager->start(); }
$ this-&gt; redirect() - &gt; toRoute('main')return(恕我直言)正确的对象:
Zend\Http\PhpEnvironment\Response Object ( [version:protected] => [contentSent:protected] => [recommendedReasonPhrases:protected] => Array ( [100] => Continue [101] => Switching Protocols [102] => Processing [200] => OK [201] => Created [202] => Accepted [203] => Non-Authoritative Information [204] => No Content [205] => Reset Content [206] => Partial Content [207] => Multi-status [208] => Already Reported [226] => IM Used [300] => Multiple Choices [301] => Moved Permanently [302] => Found [303] => See Other [304] => Not Modified [305] => Use Proxy [306] => Switch Proxy [307] => Temporary Redirect [308] => Permanent Redirect [400] => Bad Request [401] => Unauthorized [402] => Payment Required [403] => Forbidden [404] => Not Found [405] => Method Not Allowed [406] => Not Acceptable [407] => Proxy Authentication Required [408] => Request Time-out [409] => Conflict [410] => Gone [411] => Length Required [412] => Precondition Failed [413] => Request Entity Too Large [414] => Request-URI Too Long [415] => Unsupported Media Type [416] => Requested range not satisfiable [417] => Expectation Failed [418] => I'm a teapot [422] => Unprocessable Entity [423] => Locked [424] => Failed Dependency [425] => Unordered Collection [426] => Upgrade Required [428] => Precondition Required [429] => Too Many Requests [431] => Request Header Fields Too Large [444] => Connection Closed Without Response [451] => Unavailable For Legal Reasons [499] => Client Closed Request [500] => Internal Server Error [501] => Not Implemented [502] => Bad Gateway [503] => Service Unavailable [504] => Gateway Time-out [505] => HTTP Version not supported [506] => Variant Also Negotiates [507] => Insufficient Storage [508] => Loop Detected [510] => Not Extended [511] => Network Authentication Required [599] => Network Connect Timeout Error ) [statusCode:protected] => 302 [reasonPhrase:protected] => [headers:protected] => Zend\Http\Headers Object ( [pluginClassLoader:protected] => [headersKeys:protected] => Array ( [0] => location )[headers:protected] => Array ( [0] => Array ( [name] => Location [line] => Location: / ) ) ) [metadata:protected] => Array ( ) [content:protected] => )
浏览器中的地址仍然相同。
Apache access.log显示
05/Mar/2018:13:43:49 +0100
xxx.xx.xx.xxx
POST /open HTTP/1.0
Status: 200 23 B
也许这就是线索:没问题,服务器在POST后发送/favicon.ico?但为什么?我返回 fakeAction() Zend \ Http \ PhpEnvironment \ Response对象而不是ViewModel。
我正在捕捉所有异常,错误和严格的通知,但在这种情况下 - Apache / php / framework不会触发任何异常。
最后一次测试:如果某些文件在复制过程中被损坏,我只是将工作版本的目录从“project”重命名为“project1”efect是相同的 - 重定向不起作用。
更新1
最终更新!
我发现了发生了什么。正如我在我的一个答案中所写,我通过Zend Studio界面使用composer
。今天我打开了Zend Studio控制台并仔细检查了控制台日志。
每次我使用命令更新/安装依赖 composer
使用自己的缓存(不是在线存储库)并且它复制了模块zend-developer-tool但是(出于不明原因)模块的一个文件被破坏了本地硬盘上的在composer cache 中。删除作曲家缓存并再次运行update / instal依赖后,所有工作都应该如此。谢谢大家的努力。
答案 0 :(得分:0)
最后,我追查了问题的根源。现在它对我来说并不清楚&#34;为什么&#34;,但问题与模块zendframework/zend-developer-tools
相关联。
为什么我确定这个模块失败了?我不是。但也许这可以帮助有类似病例的人。
在无能为力的行为中,我删除了整个&#34; require-dev&#34;部分和重新生成的配置文件(composer update
)和问题消失了!
这是一节:
"require-dev" : {
"zendframework/zend-developer-tools" : "^1.1",
"zendframework/zend-debug" : "^2.5",
"san/san-session-toolbar" : "^1.0",
"zfcampus/zf-development-mode" : "^3.1"
},
我想,也许@edigu是对的,问题在于自动生成的文件,这只是巧合。我必须知道它的未来 - 哪个模块(如果有的话)对我的问题负责。
回滚到“破碎版”之后我开始逐个卸载模块
从这一部分(我当然总是重新生成文件)。效果是一样的 - 问题仍然存在。只有当我删除zend-developer-tools
时,一切正常......
当然,如果我在源项目中删除zend-developers-tool
然后将其复制到新目录 - 从开始就一切正常。
正如我上面所写 - 我不知道&#34;为什么&#34;然而。 但这是可重复的。每次我复制原始项目 - 我删除此模块后出现重定向问题...
最终更新!
我发现了发生了什么。正如我在我的一个答案中所写,我通过Zend Studio界面使用composer
。今天我打开了Zend Studio控制台并仔细检查了控制台日志。
每次我使用命令更新/安装依赖 composer
使用自己的缓存(不是在线存储库),它复制模块zend-developer-tool BUT(出于不可知的原因)模块之一&#39;本地硬盘上的文件已损坏在composer cache 中。删除作曲家缓存并再次运行update / instal依赖后,所有工作都应该如此。谢谢大家的努力。