2011-03-21 25 views
2

我試圖在我的服務器中的子域上安裝CakePHP應用程序。我想進行高級安裝,並從webroot目錄中分離出核心和應用程序庫。CakePHP:試圖在子域中安裝應用程序

我把整個項目放在主目錄的一個文件夾中,並將webroot目錄的內容移動到子域的httpdocs目錄。

然後,它看起來像:

子域-的httpdocs:

drwxrwxrwx 2 root root 4096 Mar 21 08:34 css 
-rwxrwxrwx 1 root root 2760 Mar 21 08:34 css.php 
-rwxrwxrwx 1 root root 374 Mar 21 08:34 favicon.ico 
drwxrwxrwx 2 root root 4096 Mar 21 08:34 files 
drwxrwxrwx 2 root root 4096 Mar 21 08:34 img 
-rwxrwxrwx 1 root root 2731 Mar 21 08:43 index.php 
drwxrwxrwx 2 root root 4096 Mar 21 08:34 js 
-rwxrwxrwx 1 root root 3086 Mar 21 08:34 test.php 

我編輯的index.php文件,並改變root和APPDIR常數點餅保持器和應用程序文件夾(在主目錄) , 分別。最後,我修改了.htaccess文件(3個文件),添加了指向app目錄的RewriteBase參數(就像烹飪書上說的http://book.cakephp.org/view/917/Apache-and-mod_rewrite-and-htaccess)。

我檢查mod_rewrite是加載在Apache和AllowOverride所有活動,但它不起作用。它每次都響應HTTP 500。

如果我把整個項目放在httpdocs目錄下(包括webroot目錄下),它可以很好地工作。

你能幫我嗎?


UPDATE

我檢查了一遍,它的工作原理,如果所有的目錄都於httpdocs文件夾(核心和應用程序目錄)。但是,他們不在另一個地方工作。

它返回提前

Warning: include(cake/bootstrap.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/mydomain.com/subdomains/subscribers/httpdocs/apptest/webroot/index.php on line 83 

Warning: include(cake/bootstrap.php) [function.include]: failed to open stream: No such file or directory in /var/www/vhosts/mydomain.com/subdomains/subscribers/httpdocs/apptest/webroot/index.php on line 83 

Warning: include() [function.include]: Failed opening 'cake/bootstrap.php' for inclusion (include_path='/home/systemtest:/home/systemtest/app/:.:') in /var/www/vhosts/mydomain.com/subdomains/subscribers/httpdocs/apptest/webroot/index.php on line 83 

感謝

+0

網絡服務器是否有權限訪問蛋糕和應用程序文件? – 2011-03-21 20:50:28

+0

謝謝你的回答艾米。可能它沒有權限。我如何添加網絡服務器的權限? httpd.conf文件? – 2011-03-21 22:56:22

回答

0

我找到了一個解決方案:

嘗試不同的事情後,我想通了,問題是與Web服務器權限。當應用程序和cake文件夾位於httpdocs目錄中時,應用程序可以正常工作,但在將它們移動到另一個目錄後,index.php返回一個HTTP 500,指示Cake核心目錄中的打開文件失敗。

的解決方案是在子域的httpd.include中的文件添加一個虛擬主機:

<VirtualHost xx.xx.xx.xxx.xx:80> 
     ServerName subdomain.mydomain.com 
     Alias /myapp /home/myapp/app/webroot 
     DocumentRoot /home/myapp/app/webroot 
     <Directory /home/myapp/app/webroot> 
       Options FollowSymLinks 
       AllowOverride All 
     </Directory> 
</VirtualHost> 

我以爲我可以單獨的應用程序,蛋糕和webroot的目錄,並沒有特定的虛擬的Apache的.htaccess管理安裝主辦。

感謝Amy和Leo的幫助

0

何塞

獨自離開了ROOT和APPDIR(在你的/app/index.php),只是改變CAKE_CORE_INCLUDE_PATH在/ app/webroot/index.php

/** 
* The absolute path to the "cake" directory, WITHOUT a trailing DS. 
* 
*/ 
if (!defined('CAKE_CORE_INCLUDE_PATH')) { 
    define(
     'CAKE_CORE_INCLUDE_PATH', 
     DS . 'usr' . DS .'share' . DS . 'cakephp' . DS . '1.3.6' 
    ); 
} 

這將從共享源讀取核心庫。如果蛋糕無法設置,將蛋糕核心源路徑添加到php include路徑中。

+0

我做到了,只要它們在httpdocs目錄中就行。如果我將蛋糕核心目錄移動到另一個位置,它不起作用。正如艾米所說,我認爲這是一個Web服務器權限問題。你知道我怎樣才能給Apache添加權限? – 2011-03-22 16:23:21

+0

但爲什麼會發生。你收到什麼錯誤信息? – Leo 2011-03-22 19:47:01

+0

嗨,獅子座,我更新了我的第一篇文章。 webroot中的index.php文件正在返回嘗試打開cake目錄的致命錯誤。看起來像一個權限問題。 我嘗試與應用程序和核心目錄中的chown – 2011-03-22 20:03:49

0

這可以以不同的方式完成。 在php中可以打開哪些目錄路徑有一些限制。 PHP定義了open_basedir指令,該指令又限制了可以包含的 文件。

在虛擬主機(如你的情況),默認的目錄樹包括 只有你$_SERVER['DOCUMENT_ROOT']/tmp目錄,所以沒有給你包括蛋糕核心,如果它位於其他地方的方式 。

一個清潔,簡單的解決辦法是添加你只需定義目錄 將在其中儲存蛋糕核心,在php.ini 之後的絕對路徑,你CAKE_CORE_INCLUDE_PATH在目錄指向 在蛋糕核心已安裝。 通過這種方式,您可以避免在httpd.conf 中爲每個創建的應用程序添加VirtualHost指令,這些應用程序在子域或甚至域本身上運行。

希望有幫助。