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


Configuring a website built with the 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)中删除尾部斜杠,但这没有区别。

有什么想法吗?

谢谢。

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

问题似乎出在路由上。

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

从错误来看,这似乎是抛弃Zend Framework的原因,因为您的文档根目录在任何一种情况下都是相同的,但是从domain.com调用时,您的baseUrl是不同的。 anotherdomain.com/~iswlp

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

试试这个:

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

在这种情况下,您仍然会收到错误吗?

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

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

显然有几种方法可以安装 Zend,但大多数人为了安全起见,将应用程序和库文件夹放在服务器上的 www/public_html 文件夹之外。事实上,这就是 Zend 如何解决盒子(或假设如此)。因此,这里有一些可能对您有所帮助的代码片段,因为您的某些配置可能已更改以适应以前的主机(同样,假设您的应用程序和库文件深度为一级(即在服务器上的公共目录之外):

索引.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 安装,则必须编辑索引.php和 htaccess 文件以适应。