代码之家  ›  专栏  ›  技术社区  ›  RepDetec

Zend框架路径问题

  •  2
  • RepDetec  · 技术社区  · 16 年前

    所有的,

    我只想查看除__Welcome to Zend Framework_屏幕之外的任何页面。

    我已从本教程下载了项目: http://framework.zend.com/docs/quickstart/create-a-form (Zend框架快速启动)

    据我所知,道路是正确的。我读过这篇文章: http://www.johnmee.com/2008/11/zend-framework-quickstart-tutorial-deploy-to-a-subdirectory-instead-of-web-root/ 我认为这可能有点过时,因为引导程序代码并不像他描述的那样。

    有人有什么想法吗?我认为Zend的教程下载应该是开箱即用的。

    总结: http://localhost/ZendFrameworkQuickstart/public/ 显示:Zend欢迎页面

    http://localhost/ZendFrameworkQuickstart/public/guestbook 显示器:404

    谢谢!

    更新 __public_目录的物理路径: C:\zend\apache2\htdocs\zendframeworkquickstart\public

    从浏览器中点击url i_m: http://localhost/zendframeworkquickstart/public/留言簿

    .htaccess内容:

    setenv应用程序环境开发

    打开重写引擎

    rewritesecond%请求文件名-s[或]

    rewritesecond%请求文件名-l[或]

    rewritesecond%请求文件名-d

    重写器^.*.-[nc,l]

    rewriterule^.*$/zendframeworkquickstart/public/index.php[nc,l]

    更新:文件中已更改的行

    HTAccess rewriterule^.*$/zendframeworkquickstart/public/index.php[nc,l]

    应用程序 resources.frontcontroller.baseurl=“/zendframeworkquickstart/public”

    public/index.php文件 错误报告(e_all_e_strict);ini_set(“显示_错误”,1);

    2 回复  |  直到 15 年前
        1
  •  1
  •   RepDetec    16 年前

    终于明白了。在apache的httpd.conf文件中,将“allowoverride none”的每个实例更改为“allowoverride all”。

    我不知道为什么Zend没有这个设置,因为我的Zend框架安装了安装程序Apache。在这一变化之后,快速启动按原样运行(甚至不需要在根目录中)。

    谢谢你的帮助!

        2
  •  0
  •   Decent Dabbler    16 年前

    添加到Jacob的评论中:我认为QuickStart应用程序的.htaccess文件中的mod重写条件和规则期望所有内容都与域的根相关,尤其是将所有内容重写到域的根。( /index.php 具体而言)。

    所以要么:

    • 调整.htaccess中的重写条件和规则,或
    • 让(虚拟)主机的根直接指向快速启动应用程序的公用文件夹。

    另外,确保您的服务器上启用了mod_rewrite(假设您有一个apache服务器)。

    编辑 由于应用程序不是从服务器的根目录运行的,所以您可能仍然应该在引导程序的某个地方设置baseurl。比如:

    $front = Zend_Controller_Front::getInstance();
    $front->setBaseUrl( '/ZendFrameworkQuickstart/public' );
    

    但是,如果您可以使用这些选项中的任何一个,那么将应用程序放在服务器的根目录中,或者让服务器的根目录指向httpd.conf中的公用文件夹,就可以避免很多麻烦。

    如果这样做,请确保再次将.htaccess设置为它的默认设置。