2011-03-21 66 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指令,这些应用程序在子域或甚至域本身上运行。

希望有帮助。