CakePHP:尝试在子域中安装应用程序

时间:2011-03-21 18:58:56

标签: cakephp installation subdomain

我正在尝试在我的服务器的子域中安装CakePHP应用程序。我想进行高级安装,并将核心和app libs与webroot目录分开。

我将整个项目放在主目录的一个文件夹中,并将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常量更改为指向蛋糕架和app文件夹(在主目录中)。最后,我修改了.htaccess文件(3个文件),添加了指向app目录的RewriteBase参数(正如烹饪书中所说http://book.cakephp.org/view/917/Apache-and-mod_rewrite-and-htaccess)。

我检查过mod_rewrite是在apache中加载的,而且AllowOverride All是活动的,但它不起作用。它每次都响应HTTP 500。

如果我将整个项目放在httpdocs目录(包括webroot目录)中,它可以很好地工作。

你能帮我解决这个问题吗?


更新

我再次检查了它,如果所有目录都在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

提前致谢

3 个答案:

答案 0 :(得分:0)

单独保留ROOT和APPDIR(在/app/index.php中),只需更改/app/webroot/index.php中的CAKE_CORE_INCLUDE_PATH

/**
* 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路径中。

答案 1 :(得分:0)

我找到了解决方案:

在尝试不同的事情后,我发现问题出在网络服务器权限上。当app和cake文件夹位于httpdocs目录中时,应用程序运行正常但在将它们移动到另一个目录后,index.php返回了一个HTTP 500,表示在cake核心目录中打开文件失败。

解决方案是在子域的httpd.include文件中添加VirtualHost:

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

我认为我可以将app,cake和webroot目录分开并使用.htaccess管理安装,而不使用特定于apache的虚拟主机。

感谢Amy和Leo的帮助

答案 2 :(得分:0)

这可以通过不同的方式完成。 在php中可以打开哪些目录路径有一些限制。 PHP定义了open_basedir指令,后者又限制了 可以包含的文件。

在虚拟主机(例如您的情况)上,默认目录树包括 只有您的$_SERVER['DOCUMENT_ROOT']/tmp目录,所以没有办法 如果它位于其他地方,你可以加入蛋糕核心。

一个干净而简单的解决方案是附加目录的绝对路径 你将在你的php.ini中存储蛋糕核心 之后,您只需将CAKE_CORE_INCLUDE_PATH定义为点 在安装蛋糕核心的目录中。 这样就可以避免在httpd.conf中添加VirtualHost指令 对于您创建的每个应用程序,它在子域甚至域本身上运行。

希望这很有用。