我已经在带有 xampp 的 Windows XP 中本地开发了一个带有 cakephp 的 Web 应用程序,并且一切正常。今天我将它部署到 CentOS 和 Ubuntu 服务器上,但我都遇到了问题。发生的事情是 Tab 空间与我的信息一起输出。假设我进行了一个应该返回的 ajax 调用,更准确地说,OK
返回的是" OK"
(0x09)OK
我真的不知道这个标签是从哪里来的。我已将我的代码减少到最大,但我仍然得到它。
控制器
public function sendcomment() {
$this->layout = 'ajax';
$this->set('ret', 'OK');
}
看法
<?php echo $ret; ?>
即使我不直接在布局上使用视图文件和输出信息,选项卡仍然存在:
控制器
public function sendcomment() {
$this->layout = 'testlayout';
}
测试布局.ctp
OK
无论布局是什么,所有操作都会发生这种情况。
有没有人经历过这个并知道可能发生了什么?我所有的文件都以 UTF-8 编码,没有 BOM,它们在 Windows 上通过 XAMPP 工作得很好。
- 编辑:
好吧,有人说这是配置问题,我真的不知道。然而,为了找到“标签”的来源,我开始在核心文件上添加回声并不断前进,直到最终找到标签所在的位置。从 cake webroot 的 index.php 开始,如果我放在方法echo 'a'
之前dispatch()
,我的输出是a(0x09)OK
. 所以标签确实来自蛋糕。
现在问题来了,看看几次测试的结果,我终于卡住了,这让我一无所获。
现在我在(CakeRoot)/lib/Cake/Routing/Dispatcher.php
。这里我们有以下方法:
protected function _loadController($request) {
$pluginName = $pluginPath = $controller = null;
if (!empty($request->params['plugin'])) {
$pluginName = $controller = Inflector::camelize($request->params['plugin']);
$pluginPath = $pluginName . '.';
}
if (!empty($request->params['controller'])) {
$controller = Inflector::camelize($request->params['controller']);
}
if ($pluginPath . $controller) {
$class = $controller . 'Controller';
App::uses('AppController', 'Controller');
App::uses($pluginName . 'AppController', $pluginPath . 'Controller');
App::uses($class, $pluginPath . 'Controller');
if (class_exists($class)) {
return $class;
}
}
return false;
}
我正是在这一部分:
App::uses($class, $pluginPath . 'Controller');
if (class_exists($class)) {
return $class;
}
现在这里是测试,如果我echo
在 if 之前放一个正确的,像这样:
App::uses($class, $pluginPath . 'Controller');
echo 'a';
if (class_exists($class)) {
return $class;
}
我的输出将是a(0x09)OK
. 但是,如果我将我的回声放在 if 中,如下所示:
App::uses($class, $pluginPath . 'Controller');
if (class_exists($class)) {
echo 'a';
return $class;
}
我的输出将是(0x09)aOK
。我唯一想到的就是class_exists()
与标签相呼应。但这没有任何意义。出于测试目的,我做了这个:
App::uses($class, $pluginPath . 'Controller');
if (TRUE) {
return $class;
}
仍然在输出选项卡。更糟糕的是,如果我这样做if == TRUE
,无论回声“a”是在 if 之前还是在 if 内部,输出都将始终为a(0x09)OK
.
这里发生了什么?