我一直在尝试在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.baseUrl
或App.fullBaseUrl
,到别的东西,但我不确定什么。
应用程序的根目录位于/ <root>/home/webdev/webroot/Cake
,公共域位于/ <root>/home/webdev/webroot
。我认为这些信息可能与解决问题有关。
任何帮助都将非常感激。谢谢
您似乎缺乏设置服务器的基本知识,这使我认为您可能在尝试使其工作的方式中混合了许多不同的"变通方法",因此现在通过此修复它可能太困难了。
如果你有root权限访问debian服务器,我想你说的是你自己的VPS。然后你很可能可以重置为一个新的安装并重新开始。
所以重要的事情先做:
- 你正在windows上开发,并将在unix (linux)上服务你的应用程序。注意windows是不区分大小写的,而unix不是,如果你不遵循惯例,你肯定会在某些时候结束这个问题(即
webroot/Cake
或webroot/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
下正确访问你的应用程序,并从那里开始。