我开始没有想法了 - 所以这要么深刻又神秘,要么真的非常明显。
我的开发网站是一个99.9%相同的prod副本。 (数据库密码不同)。
我已添加到开发网站:
1 controller in blah/contollers/NewThingController.php
1 model in blah/models/NewThing.php
a few new views in blah/views/scripts/newview1.phtml, newview2.phtml etc...
所有这些事情在开发方面都非常好。
将FTP文件发送到prod主机。使用prod上的所有相同路径作为dev。更改权限以匹配prod主机上的所有其他内容。与prod主机上的其他所有者一起出现在同一所有者身上。
在prod主机上重启Apache。
我一直收到错误:
An error occurred
Page not found
Exception information:
Message: Invalid controller specified (NewThing)
Stack trace:
#0 /var/www/library/Zend/Controller/Front.php(954): Zend_Controller_Dispatcher_Standard->dispatch(Object(Zend_Controller_Request_Http), Object(Zend_Controller_Response_Http))
#1 /var/www/library/Zend/Application/Bootstrap/Bootstrap.php(97): Zend_Controller_Front->dispatch()
#2 /var/www/library/Zend/Application.php(366): Zend_Application_Bootstrap_Bootstrap->run()
#3 /var/www/index.php(25): Zend_Application->run()
#4 {main}
Request Parameters:
array (
'controller' => 'NewThing',
'action' => 'newview1',
'module' => 'MYMODULENAME',
)
具有讽刺意味的是,控制器/动作/模块规格完全正确。并且各种各样的位都应该是它们应该存在的位置。
这开始感觉像是一个平行的宇宙。
我非常感谢您提出的任何建议。
感谢阅读。
答案 0 :(得分:0)
对于他们来说,以后会偶然发现这个页面......
Windows和Linux如何处理文件名中的字符大小写,以及如何在Windows上使用Zend页面加载/路由/调度工具进行操作,这是不同的。
请注意,控制器文件名是NewThingController.php,类名是MYMODULENAME_NewThingController。 (Zend Framework 1.11.1)
我试图导航到地址处的页面:
http://website/NewThing/actionname
这在Zend的WindowsXP / Apache安装上很好用而且很有用。但它在Ubuntu Linux上失败了 - 人们可以假设任何其他Linux / Unix。
严格来说,我认为在Windows上不应该没问题,但确实如此。
然而,在Linux上,这被拒绝了。 Zend安装在Linux上,坚持使用正统的URL:
http://website/new-thing/actionname
...至少对于我正在使用的CamelCase控制器FileName和ClassName。
现在我要踢猫了。