2013-08-29 41 views
0

我在文件夾名FC下包含應用程序文件夾,index.php等,我在ec2上的ubuntu實例上載了一個cakephp項目。當我上傳文件夾時,它顯示了索引文件夾,因此我直接將FC下的內容上傳到www文件夾,以便它可以自動獲取index.php文件。現在,該網站開始顯示,但平原,沒有CSS或圖像或JS。我看了看錯誤日誌,它的顯示如下:Cakephp應用程序在ec2上顯示不正確的路徑

[週三8月28日14點15分56秒2013] [錯誤] [客戶xxxxxxxxxxxxxxxxx]文件不存在:在/ var/WWW/JS,引用者:http://xxxxxxxxxxxxxxxxxxxxxxxx.compute.amazonaws.com/

[星期三08月28 14時15分56秒2013] [錯誤] [客戶端xxxxxxxxxxxxxxxxx]文件不存在:/無功/網絡/ JS,引用者:http://xxxxxxxxxxxxxxxxxxxxxxxx.compute.amazonaws.com/

顯然,這表明,該路徑被設置不正確。現在我爲我的js和圖像提供的路徑是在webroot文件夾中,所以我在img文件夾中有我的圖像,並且在webroot下的js文件夾中有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'); 

的下面是的index.php標準的內容,它不寫入CHANGE

網站可用/默認:

<VirtualHost *:80> 
    ServerAdmin [email protected] 

    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.ctp重定向到位於LocationsController中的多個鏈接,包括index.ctp,而Cake正在嘗試查找FCController。我是否需要重新命名locationscont到FCcont以匹配約定呢?

* 我剛剛發現,視圖和控制器內部的網址都是這樣開始的'/FC/locations/...etc'。我是否需要從基本路徑提供網址,即'/ var/www/FC ...'? *

回答

0

如果您使用的是默認的Apache您可公開訪問的文件夾是/var/www/

以下說明將改變DocumentRoot的設置和蛋糕,讓你開始最簡單的方法。

爲了安全起見,在準備一切時首先停止你的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_CORE_INCLUDE_PATH'並使其define('CAKE_CORE_INCLUDE_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服務(阿帕奇)可以訪問您的文件,並寫入緩存,執行以下命令:

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 
+0

超級!它顯示了大部分代碼。但是,我只能訪問index.php文件,並且當我轉到鏈接時,它顯示不正確的路徑,即。 /var/www/myproject/locations/ 相反,它應該顯示 /var/www/myproject/app/locations 這告訴我爲app文件夾設置的位置不正確...我在哪裏更改它?非常感謝! – Anugrah

+0

我不明白你的問題是什麼,你能更具體嗎? – user221931

+0

Myproject文件夾名稱對我來說是FC,因此/ var/www/FC/app是應用程序位置。 現在,當我在core.php中將調試切換爲2並單擊任何鏈接時,顯示以下錯誤: 錯誤:無法找到FCController。 錯誤:在文件中創建以下類FCController:app/Controller/FCController.php <?php class FCController extends AppController { } 我沒有名爲FCController的文件,這不是我的代碼,我該怎麼辦? – Anugrah

0

我排序的問題了。這是因爲在我的代碼,以前的用戶做了一個控制器文件Locationscontroller.php和指定的URL是這樣的:

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

這對本地主機在我的本地機器的基本文件夾是htdocs中,我不得不鍵入localhost/FC /來訪問index.php。 因此,自然而然由於在EC2上我讓FC本身成爲我的基礎文件夾,它試圖訪問其中不存在的另一個FC。/XXX/locations /表示它搜索「XXX」控制器,然後搜索其中的位置。由於我的控制器是位置,它一直給出一個錯誤。

只要我把它改成這樣:

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

它指向正確的控制器,這是位置。 這都是因爲我沒有檢查哪個控制器被哪個視圖調用! 我是個白癡,那會是一切:D

+0

那麼表單發佈url如何與您的js和img文件夾沒有任何關係,就像您在原始文章中所說的那樣顯示不正確? – user221931

+0

js和img的網址也有一個額外的/FC/...just之前必須刪除! :d – Anugrah

相關問題