在一个子目录中安装cakephp 2.0.0

时间:2012-08-14 16:49:10

标签: php macos apache cakephp installation

我发现了类似的问题here,但未找到解决方案。基本上我已经在子目录'localhost / dyod'中安装了现有的cakephp应用程序。没有编辑htaccess文件,我得到一个错误告诉我该应用程序正在寻找dyod控制器,所以看起来uri以某种方式关闭。当我向htaccess文件(/ dyod /)添加重写基础时,所有资产的网址都关闭,不包括webroot。此外,它仍在寻找一个dyod控制器。我的htaccess文件是从here复制的。

提前感谢。

3 个答案:

答案 0 :(得分:2)

除此之外,因为它位于谷歌搜索的顶部,这些答案并没有帮助。

CakePHP使用3个.htaccess文件,这些文件都需要修改。一个在顶级CakePHP目录中,一个在app /和一个在app / webroot中。将以下内容添加到以下每个中:

RewriteBase / path / to / dir /

在我的机器上,我有以下结构: 〜/站点/ SITE1 〜/位点/站点2 /管理

每个目录都有一个单独的CakePHP安装。

在site1和site2 / admin中安装CakePHP。 这些网站的网址是:

http://localhost/~me/site1
http://localhost/~me/site2/admin

我一直收到这个错误: 在此服务器上找不到请求的URL /home/me/Sites/site1/app/webroot/index.php。

我修改了3 .htaccess文件来获取这些文件:

site1 .htaccess:

<IfModule mod_rewrite.c>
   RewriteEngine on
   RewriteBase /~me/site1/
   RewriteRule    ^$ app/webroot/    [L]
   RewriteRule    (.*) app/webroot/$1 [L]
</IfModule>

site1/app .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine on
    RewriteBase /~me/site1/app/
    RewriteRule    ^$    webroot/    [L]
    RewriteRule    (.*) webroot/$1    [L]
</IfModule>

site1/app/webroot .htaccess:

<IfModule mod_rewrite.c>
    RewriteEngine On
    RewriteBase /~me/site1/app/webroot/
    RewriteCond %{REQUEST_FILENAME} !-d
    RewriteCond %{REQUEST_FILENAME} !-f
    RewriteRule ^ index.php [L]
</IfModule>

那就是它。这三个变化都是你需要的。

答案 1 :(得分:0)

在.htaccess文件中添加RewriteBase指令:

RewriteBase / path / to / cake / app

在你的情况下,这将是:

RewriteBase / path / to / dyod

答案 2 :(得分:0)

本页介绍如何在不同于“普通”的位置安装CakePHP:

http://book.cakephp.org/2.0/en/installation/advanced-installation.html

基本上,您只需在webroot/index.php文件中更改3个值即可。您不必编辑任何.htaccess文件。我在我现在所做的每个站点的子目录中安装CakePHP,而且我从来没有触及过.htaccess文件。只需更改webroot/index.php中的值,就可以了。

示例 - 我的目录结构:

-cakephp
    -cakephp_2_2
    -cakephp_1_3
    -cakephp_2_1_beta
    - ...etc
-public_html
    -mysite1
        -Config
        -Console
        -Controller
        -Lib
        - ...etc
        -View
        -webroot
    -mysite2
        -Config
        -Console
        -Controller
        -Lib
        - ...etc
        -View
        -webroot

在我的webroot中:

if (!defined('ROOT')) {
define('ROOT', DS.'home'.DS.'myusername'.DS.'public_html');
}


if (!defined('APP_DIR')) {
define('APP_DIR', 'mysite1');
}


define('CAKE_CORE_INCLUDE_PATH', DS.'home'.DS.'myusername'.DS.'cakephp'.DS.'cakephp_2_2'.DS.'lib');