我是ZF的新手,我正在开发一个已经构建的应用程序。我的任务是在应用程序中创建Web服务。我已在本地设置应用程序并且其工作正常。所以我添加了一个新的控制器并且可以在localhost中访问,但是当我尝试在服务器中访问它时,它会导致404错误,但是可以完美地访问其他控制器。
在服务器中启用了AllowOverride All和Apache mod_rewrite。有没有人知道这个问题。我和这个错误坐了两天..
<VirtualHost *:80>
DocumentRoot /path/to/site/public
ServerName sitename.com
ServerAlias www.sitename.com
<Directory /path/to/site/public>
AllowOverride All
</Directory>
</VirtualHost>
控制器代码:
class APIController extends Zend_Controller_Action
{
public function init()
{
/* Initialize action controller here */
}
public function indexAction()
{
// Setup REST server
$server = new Zend_Rest_Server();
$server->setClass('APIHandlerClass');
$server->handle();
exit;
}
}
我正在使用网址 site.com/API 访问它。它会在实际情况下显示XML。
修改:
我已经在本地linux系统中设置了应用程序,我发现问题与linux有关。
我尝试了以下内容:
创建了一个新的控制器,结果为404。
复制现有控制器并重命名原始控制器的名称。然后我更改了复制的控制器中的代码。我访问了我的控制器,它工作正常!
复制现有控制器并重命名复制的控制器。我用新名称调用了复制的控制器,显示404错误。
我的问题是我是否需要在任何地方指定新的控制器名称!?我没有找到任何关于此的文档,我甚至为控制器创建了视图文件。
答案 0 :(得分:4)
如果应用程序在Windows中本地运行但在运行Linux的测试服务器上不起作用,则可能是区分大小写的问题。检查文件夹的大小写,包括controllers文件夹和views / scripts文件夹(两者都应为小写)。