php test.php
должен сделать это, или
php -f test.php
, чтобы быть явным.
Почему бы просто не распаковать файлы в / usr / www / users / username /
?
Я думаю, что .htaccess читает это '~' и думает, что вы ссылаетесь на свою домашнюю папку (что-то вроде ярлыка в Linux).
Самый быстрый способ запустить приложение - это перейти в файл config / core.php cake и отключить перезапись (он говорит вам раскомментировать некоторые вещи и удалить некоторые файлы .htaccess). другой способ - отредактировать ваш .htaccess и каким-то образом сказать, что '~' не относится к домашнему каталогу. может простой \ будет работать.
Вы изменяете не тот файл. Файл .htaccess, который вам нужно изменить, находится в / dev, вам не следует изменять его в /dev/cake/app/webroot/.htaccess
Не должно
RewriteBase /usr/www/users/username/dev/cake/app/webroot/
быть
RewriteBase /~username/dev/cake/
RewriteBase
заботится о сопоставлении реальных URL-адресов виртуальным, и я думаю, что это то, что вам нужно.
Я размещаю на паре, и мне удалось заставить работать правила перезаписи, но у меня возникают проблемы с получением по ссылке HTML-> параметров сортировки для всех ссылок на страницах. Тот же код отлично работает в рабочем окне моего локального компьютера, но при сортировке пар или слишком большом количестве параметров запроса (страницы редактирования или обновления) возникают проблемы.
Да, вы должны указать путь DOCUMENT_ROOT в следующих файлах. Пожалуйста, обратитесь к phpinfo () вашего сервера, чтобы получить правильный путь DOCUMENT_ROOT. Это должно быть что-то вроде var / www / html /
.
.htaccess в корневом каталоге / (вне каталога приложений, торта, поставщиков)
RewriteEngine на
RewriteRule ^ $) DOCUMENT_ROOT / app / webroot / [L]
RewriteRule (. *) DOCUMENT_ROOT / app / webroot / $ 1 [L]
.htaccess в каталоге / app
RewriteEngine на
RewriteRule ^ $ DOCUMENT_ROOT / app / webroot / [L]
RewriteRule (. *) DOCUMENT_ROOT / app / webroot / $ 1 [L]
.htaccess в каталоге / app / webroot
RewriteEngine On
RewriteCond% {REQUEST_FILENAME}! -D
RewriteCond% {REQUEST_FILENAME}! -F
RewriteRule ^ (. *) $ DOCUMENT_ROOT / app / webroot / index.php? Url = $ 1 [QSA, L]
У меня это сработало.
У меня была аналогичная проблема с «расширенной установкой» из официальный CakePHP Cockbook. Через пару часов мне удалось заставить его работать.
ОС: Mac OS X
Основной каталог Cake: / usr / lib / cake
Мой каталог приложений приложения: / Users / myuser / dev / myapp
Корневой каталог моего приложения: / Users / myuser / Sites / myapp
Модификация /Users/myuser/Sites/myapp/index.php
if (!defined('ROOT')) {
define('ROOT', DS.'Users'.DS.'myuser'.DS.'dev');
}
if (!defined('APP_DIR')) {
define('APP_DIR', 'myapp');
}
if (!defined('CAKE_CORE_INCLUDE_PATH')) {
define('CAKE_CORE_INCLUDE_PATH', DS.'usr'.DS.'lib');
}
Модификация /Users/myuser/Sites/myapp/.htaccess
<IfModule mod_rewrite.c>
RewriteEngine on
RewriteBase /~myuser/myapp/
RewriteCond %{REQUEST_FILENAME} !-d
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^(.*)$ index.php?url=$1 [QSA,L]
</IfModule>
Что касается /Users/myuser/dev/myapp/.htaccess - этот файл не нужен в этой конфигурации, поэтому я удалил его. Самая сложная часть этой конфигурации - включить mod_rewrite в Apache. На Mac редактирование /private/etc/apache2/httpd.conf кажется бессмысленным (для этой задачи). Для каждого пользователя создается дополнительный файл конфигурации Apache.
Модификация /private/etc/apache2/users/myuser.conf
<Directory "/Users/myuser/Sites/">
Options FollowSymLinks
AllowOverride All
</Directory>
По умолчанию AllowOverride имеет значение None, поэтому mod_rewrite не будет работать в этой конфигурации.
После этого изменения http: // localhost / ~ myuser / myapp работает правильно.
PS. Быстрое исправление разрешений для каталога tmp.
sudo chgrp -R www /Users/myuser/dev/myapp/tmp
sudo chmod -R g+w /Users/myuser/dev/myapp/tmp