让Cakephp在Debian服务器上工作,但是我在根目录上有一个丢失的控制器错误


Getting Cakephp to work on a Debian server, but I'm having a missing controller error at the root

我一直在尝试在Debian服务器上运行cakePHP应用程序。它使用WAMP在本地主机上运行。一开始我遇到了重写不工作的问题。所以我试图通过将一些文件夹的所有者从root改为www-data来解决这个问题,正如我在互联网上其他地方看到的那样,这会有所帮助。我将cakephp应用程序的根改为www-data,并将其下的所有内容改为www-data(递归地)。但这仍然没有解决问题。

所以我去了说明,如果你不能得到url重写工作,通过执行以下操作…

所以我找到了一些其他的指令,说要摆脱./htaccess, /app/.htaccess/app/webroot/.htaccess文件,我做了。

我取消了cakephp文件夹中以下几行注释:

Configure::write('App.baseUrl', env('SCRIPT_NAME'));
Configure::write('App.fullBaseUrl', env('SCRIPT_NAME'));
Configure::write('App.imageBaseUrl', 'img/');
Configure::write('App.cssBaseUrl', 'css/');
Configure::write('App.jsBaseUrl', 'js/');

现在我得到这个错误:

Missing Controller
Error: CakeController could not be found.
Error: Create the class CakeController below in file: app/Controller/CakeController.php
<?php

类CakeController扩展AppController {

}

Notice: If you want to customize this error message, create app/View/Errors/missing_controller.ctp
Stack Trace
APP/webroot/index.php line 108 → Dispatcher->dispatch(CakeRequest, CakeResponse)
ROOT/index.php line 41 → require(string)

我想我必须改变App.baseUrlApp.fullBaseUrl,到别的东西,但我不确定什么。

应用程序的根目录位于/ <root>/home/webdev/webroot/Cake,公共域位于/ <root>/home/webdev/webroot。我认为这些信息可能与解决问题有关。

任何帮助都将非常感激。谢谢

您似乎缺乏设置服务器的基本知识,这使我认为您可能在尝试使其工作的方式中混合了许多不同的"变通方法",因此现在通过此修复它可能太困难了。

如果你有root权限访问debian服务器,我想你说的是你自己的VPS。然后你很可能可以重置为一个新的安装并重新开始。

所以重要的事情先做:

  • 你正在windows上开发,并将在unix (linux)上服务你的应用程序。注意windows是不区分大小写的,而unix不是,如果你不遵循惯例,你肯定会在某些时候结束这个问题(即webroot/Cakewebroot/cake对windows是一样的,但在unix上不同)。
  • 默认情况下,您不能让Apache从用户主文件夹(/home/user/...)提供文件,而是从/var/www提供文件。如果你想要第一种方式,你需要正确地设置它,这意味着知道如何创建一个apache站点配置文件和/或搞乱apache的主配置文件。如果我是你,我就把这个留到以后。
  • Apache必须服务的任何文件夹中的文件夹/文件需要被www-data用户或组访问/可读。例外情况是应用程序的tmp文件夹也需要由相同的用户或组可写。如果你把它们放在/var/www/app上,你可以chown www-data:www-data /var/www/app -R,这将节省你很多时间在你的方式,使事情开始工作。
  • 默认情况下,Apache没有启用重写。你需要a2enable rewrite && service apache2 restart。您还需要检查/var/www/目录下/etc/apache2/sites-available/000-default.conf中的AllowOverride指令,以确保它被设置为AllowOverride All

如果你应用了上面的内容,你应该能够在http://server_name/app下正确访问你的应用程序,并从那里开始。

相关文章: