Cakephp应用程序在ec2上显示不正确的路径

Cakephp应用程序在ec2上显示不正确的路径,php,css,cakephp,path,amazon-ec2,Php,Css,Cakephp,Path,Amazon Ec2,我有一个文件夹名为FC的cakephp项目,其中包含app folder、index.php等,我将其上传到ec2上的ubuntu实例上。当我上传文件夹时,它显示了index文件夹,所以我将FC下的内容直接上传到www文件夹,这样它就可以自动获取index.php文件。现在,网站开始显示,但简单,没有css或图像或js。我查看了错误日志,它显示了以下内容: [2013年8月28日星期三14:15:56][error][client xxxxxxxxxxxxxxxxxxxxx]文件不存在:/var

我有一个文件夹名为FC的cakephp项目,其中包含app folder、index.php等,我将其上传到ec2上的ubuntu实例上。当我上传文件夹时,它显示了index文件夹,所以我将FC下的内容直接上传到www文件夹,这样它就可以自动获取index.php文件。现在,网站开始显示,但简单,没有css或图像或js。我查看了错误日志,它显示了以下内容:

[2013年8月28日星期三14:15:56][error][client xxxxxxxxxxxxxxxxxxxxx]文件不存在:/var/www/js,参考:

[2013年8月28日星期三14:15:56][error][client xxxxxxxxxxxxxxxxxxxxx]文件不存在:/var/www/js,参考:

显然,这表明路径设置不正确。现在,我为我的js和图像提供的路径在webroot文件夹中,所以我的图像在img文件夹中,js在webroot下的js文件夹中,所以作为路径,我只提供“filename.whatever”,这在localhost上运行良好。 我需要如何设置路径,以便它们指向正确的位置?当我在一个拙劣的图像上检查元素时,它显示路径/img/xxxx.jpg。这意味着蛋糕会自动进入image/js/css文件夹,这就是我的代码在本地机器上的工作方式。现在,当我手动给出路径时,比如/www/app/webroot/img/xxx.jpg,它会像这样附加它:img/www/app/…等等。请帮忙!是否有相关文档,或者是否有人曾经这样做过

编辑: webroot/index.php:

if (!defined('DS')) {
    define('DS', DIRECTORY_SEPARATOR);
} 

define('ROOT', '/var/www/FC');   

define('APP_DIR', 'app');

define('CAKE_CORE_INCLUDE_PATH', DS . 'var' . DS . 'www' . DS . 'FC' . DS . 'lib');
  <VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/FC/app/webroot
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>
下面是INDEX.PHP的标准内容,它是为了不更改而编写的

可用站点/默认值:

if (!defined('DS')) {
    define('DS', DIRECTORY_SEPARATOR);
} 

define('ROOT', '/var/www/FC');   

define('APP_DIR', 'app');

define('CAKE_CORE_INCLUDE_PATH', DS . 'var' . DS . 'www' . DS . 'FC' . DS . 'lib');
  <VirtualHost *:80>
    ServerAdmin webmaster@localhost

    DocumentRoot /var/www/FC/app/webroot
    <Directory />
        Options FollowSymLinks
        AllowOverride All
    </Directory>
    <Directory /var/www>
        Options Indexes FollowSymLinks MultiViews
        AllowOverride All
        Order allow,deny
        allow from all
    </Directory>

    ScriptAlias /cgi-bin/ /usr/lib/cgi-bin/
    <Directory "/usr/lib/cgi-bin">
        AllowOverride All
        Options +ExecCGI -MultiViews +SymLinksIfOwnerMatch
        Order allow,deny
        Allow from all
    </Directory>

    ErrorLog ${APACHE_LOG_DIR}/error.log

    # Possible values include: debug, info, notice, warn, error, crit,
    # alert, emerg.
    LogLevel warn

    CustomLog ${APACHE_LOG_DIR}/access.log combined

    Alias /doc/ "/usr/share/doc/"
    <Directory "/usr/share/doc/">
        Options Indexes MultiViews FollowSymLinks
        AllowOverride All
        Order deny,allow
        Deny from all
        Allow from 127.0.0.0/255.0.0.0 ::1/128
    </Directory>

</VirtualHost>

服务器管理员webmaster@localhost
DocumentRoot/var/www/FC/app/webroot
选项如下符号链接
允许超越所有
选项索引跟随符号链接多视图
允许超越所有
命令允许,拒绝
通融
ScriptAlias/cgi-bin//usr/lib/cgi-bin/
允许超越所有
选项+执行CGI-多视图+符号链接所有者匹配
命令允许,拒绝
通融
ErrorLog${APACHE_LOG_DIR}/error.LOG
#可能的值包括:调试、信息、通知、警告、错误、临界值、,
#警惕,埃默格。
日志级别警告
CustomLog${APACHE\u LOG\u DIR}/access.LOG组合
别名/doc/“/usr/share/doc/”
选项索引多视图跟随符号链接
允许超越所有
命令拒绝,允许
全盘否定
允许从127.0.0.0/255.0.0.0::1/128开始
顺便说一下,my Index.ctp重定向到位于LocationsController(包括Index.ctp)中的多个链接,而cake正在尝试查找FCController。我是否需要将locationscont重命名为FCcont以匹配约定


*我刚刚发现,视图和控制器中的URL等都是这样开始的“/FC/locations/…etc”。我需要从基本路径(即“/var/www/FC…”)给出URL吗*

如果您使用的是apache,那么默认情况下,您可以公开访问的文件夹是
/var/www/

以下说明将以最简单的方式更改documentroot和setup cake,让您开始使用

在准备一切时,首先出于安全原因停止apache服务器

sudo service apache2 stop
然后在
/var/www/myproject
中复制您的项目。这意味着您将能够在
/var/www/myproject/app/webroot
中找到webroot。当然,
myproject
可以是您想要的任何文件夹,只要在所有命令中保持不变即可

您需要告诉应用程序在哪里可以找到cakePHP:

nano /var/www/myproject/app/webroot/index.php
转到以
define('CAKE\u CORE\u INCLUDE\u PATH'
开头的行,并使其
define('CAKE\u CORE\u INCLUDE\u PATH',DS.var.DS.www.DS.myproject.DS.cakephp.DS.lib')
-假设
cakephp/lib
可以在
/var/www/myproject/cakephp/lib>中找到,或者根据需要进行修改

然后告诉apache新文档根是什么:

sudo nano /etc/apache2/sites-available/default
无论你在哪里看到
/var/www
都将其更改为
/var/www/myproject/app/webroot

为了确保web服务(apache)可以访问您的文件并写入缓存,请执行以下命令:

sudo chown www-data:www-data /var/www/myproject -R
sudo chmod 777 /var/www/myproject/tmp -R
最后再次启动apache:

sudo service apache2 start
如果现在转到
http://xxx.compute.amazonaws.com/
所有这些都应该有效

如果没有看到应用CSS,则需要启用“重写”模块:

sudo a2enmod rewrite && sudo service apache2 restart

我解决了这个问题。这是因为在我的代码中,前一个用户创建了一个控制器文件Locationscontroller.php,并指定了如下URL:

<form id ="0" action="/FC/locations/confirm_final">

这是针对本地计算机中的localhost,其中基本文件夹是htdocs,我必须键入localhost/FC/才能访问index.php。 因此,很自然地,因为在EC2上,我将FC本身作为基本文件夹,它试图访问其中不存在的另一个FC。/XXX/locations/表示它搜索“XXX”控制器,然后搜索其中的位置。因为我的控制器是位置,所以它不断给出错误

一旦我把它改成这个:

<form id ="0" action="/locations/confirm_final">

它指向了正确的控制器,该控制器位于多个位置。 这都是因为我没有检查哪个视图调用了哪个控制器!
我是个白痴,就这些了:D

Super!它显示了大部分代码。但是,我只能访问index.php文件,当我转到一个链接时,它会显示不正确的路径,即/var/www/myproject/locations/相反,它应该显示/var/www/myproject/app/locations,它告诉我为app文件夹设置的位置不正确…我应该在哪里查看nge它?非常感谢!我不明白你的问题是什么,你能更具体一点吗?我的项目文件夹名称是FC,因此/var/www/FC/app是app location。现在,当我在core.php中将调试切换到2,并单击任何链接时,显示的错误是:错误:找不到FCController。错误:在下面创建类FCController在文件app/Controller/FCController.php中,您是如何尝试通过URL访问该应用程序的?嘿,我已经猜到了