配置使用Zend框架构建的网站

时间:2012-06-13 00:31:20

标签: php zend-framework

我正在尝试将使用Zend PHP框架构建的网站迁移到新服务器,但我很难将其启动并运行。我之前没有构建该网站,而且之前我从未使用过这个框架,所以这对我来说都很困惑。

我收到的错误消息是:

Error : Invalid controller specified (~iswlp)
Trace info : #0 /home/iswlp/library/Zend/Controller/Front.php(954):
Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http)) #1 /home/iswlp/public_html/index.php(80):
Zend_Controller_Front->dispatch() #2 {main}

我尝试从APPLICATION_PATH目录(/ home / iswlp / application)中删除尾部斜杠,但没有区别。

有什么想法吗?

感谢。

3 个答案:

答案 0 :(得分:0)

如果/Users/Tim/Sites/iswlp.com.au/是您的项目根目录(包含名为applicationlibrary等的文件夹),则APPLICATION_PATH应设置为:/Users/Tim/Sites/iswlp.com.au/application/ /home/iswlp/application/

答案 1 :(得分:0)

问题似乎与路由有关。

我猜您是通过mod_userdir http://somedomain.com/~iswlp/foo访问该应用,这是正确的吗?

从错误中看出是什么导致Zend Framework失败,因为在任何一种情况下你的文档根都是相同的,但是从domain.comanotherdomain.com/~iswlp

作为一种解决方法,您可以尝试修改PC上的hosts文件,并在尝试访问该网站时查看错误是否消失。

试试这个:

  • 确定托管ZF应用程序的服务器的IP地址。
  • 在您的系统上打开hosts file
  • 1.2.3.4 domain.com添加到hosts文件,其中1.2.3.4是服务器IP,domain.com是站点的假定域名,因为它在Apache / IIS / OtherServer中配置
  • 现在打开浏览器并尝试访问domain.com

在这种情况下你还会得到错误吗?

我从未尝试过,但如果ZF应用程序将托管在/~username文件夹上,则可能需要对应用程序进行少量配置更改。

答案 2 :(得分:0)

配置/路由问题 - 要检查的几件事:

显然有几种方法可以安装Zend,但是为了安全起见,大多数人都将应用程序和库文件夹放在服务器上的www / public_html文件夹之外。这实际上是Zend如何解决方案(或假设如此)。所以这里有一些可能对你有帮助的片段,因为你的一些配置可能已经改变以适应以前的主机(再次假设您的应用程序和库文件是一层深度(即在您的服务器上的公共目录之外):< / p>

index.php文件摘要:

// Define path to application directory
if (!defined('APPLICATION_PATH')) {    
    define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application'));
}

// Define the application root
if (!defined('APPLICATION_ROOT')) {    
    define('APPLICATION_ROOT', realpath(dirname(__FILE__) . '/..'));
}

// Ensure library/ is on include_path
set_include_path(    
    APPLICATION_ROOT . '/library' . PATH_SEPARATOR    
    . get_include_path()
);

htaccess文件摘要

RewriteEngine On
RewriteCond %{REQUEST_FILENAME} \.(js|css|gif|jpg|png|swf)$ [OR]
RewriteCond %{REQUEST_FILENAME} -s [OR]
RewriteCond %{REQUEST_FILENAME} -l [OR]
RewriteCond %{REQUEST_FILENAME} -d
RewriteRule ^.*$ - [NC,L]
RewriteRule ^.*$ index.php [NC,L]

如果您没有标准的Zend安装,则必须同时编辑index.php和htaccess文件。