2014-01-06 6 views
1

Я развернул приложение zend на локальном сервере (ubuntu), страница по умолчанию работает нормально, но все остальные приложения выбрали страницу 404, не найденную.404 после развертывания приложения zend

мой index.php

// Define path to application directory defined('APPLICATION_PATH') 
    || define('APPLICATION_PATH', realpath(dirname(__FILE__) . '/../application')); 

// Define application environment defined('APPLICATION_ENV') 
    || define('APPLICATION_ENV', (getenv('APPLICATION_ENV') ? getenv('APPLICATION_ENV') : 'production')); 

// Ensure library/ is on include_path set_include_path(implode(PATH_SEPARATOR, array(
    realpath(APPLICATION_PATH . '/../library'), 
    get_include_path(),))); 

/** Zend_Application */ require_once 'Zend/Application.php'; 

// Create application, bootstrap, and run $application = new Zend_Application(
    APPLICATION_ENV, 
    APPLICATION_PATH . '/configs/application.ini'); $application->bootstrap() 

      ->run(); 

application.ini

[production] 
phpSettings.display_startup_errors = 0 
phpSettings.display_errors = 0 
includePaths.library = APPLICATION_PATH "/../library" 
bootstrap.path = APPLICATION_PATH "/Bootstrap.php" 
bootstrap.class = "Bootstrap" 
appnamespace = "Application" 
resources.frontController.params.displayExceptions = 0 



resources.layout.layoutPath = APPLICATION_PATH "/layouts/scripts/" 
resources.frontController.moduleDirectory = APPLICATION_PATH "/modules" 
resources.modules = "" 
resources.frontController.params.prefixDefaultModule = "1" 

resources.db.adapter = mysqli 
resources.db.params.host = localhost 
resources.db.params.username = root 
resources.db.params.password = "" 
resources.db.params.dbname = assalam 

[staging : production] 

[testing : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 

[development : production] 
phpSettings.display_startup_errors = 1 
phpSettings.display_errors = 1 
resources.frontController.params.displayExceptions = 1 

функция _initAutoLoader в Bootsrap файл

protected function _initAutoLoad(){ 
     $modelLoader = new Zend_Application_Module_Autoloader(array(
           'namespace'=>'', 
           'basePath'=>APPLICATION_PATH . '/modules/default' 
          )); 
     if(Zend_Auth::getInstance()->hasIdentity()){ 
      Zend_Registry::set('role',Zend_Auth::getInstance()->getStorage()->read()->role); 

     }else { 
      Zend_Registry::set('role','Visiteurs'); 
     } 

     $this->_acl = new Model_UsersAcls(); 
     $this->_auth = Zend_Auth::getInstance(); 

     $fc = Zend_Controller_Front::getInstance(); 
     $fc->registerPlugin(new Plugin_AccessCheck($this->_acl)); 

     return $modelLoader; 
    } 

apache2.conf содержит

<Directory /> 
     Options FollowSymLinks 
     AllowOverride None 
     Require all denied 
</Directory> 

<Directory /usr/share> 
     AllowOverride None 
     Require all granted 
</Directory> 

<Directory /var/www/> 
     Options Indexes FollowSymLinks 
     AllowOverride All 
     Require all granted 
</Directory> 

файл Htaccess содержит

RewriteEngine On 
RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 
RewriteRule ^.*$ - [NC,L] 
RewriteCond %{REQUEST_URI}::$1 ^(/.+)(.+)::\2$ 
RewriteRule ^(.*)$ - [E=BASE:%1] 
RewriteRule ^(.*)$ %{ENV:BASE}index.php [NC,L] 

код виртуального хоста

<VirtualHost *:80> 
    ServerName localhost 
    DocumentRoot /var/www/ 

    <Directory /var/www/> 
     Options +FollowSymlinks +SymLinksIfOwnerMatch 
     AllowOverride All 
    </Directory> 
</VirtualHost> 

ответ

0

У вас есть файл htaccess?

Позволяет ли серверу запускать файлы htaccess (убедитесь, что для параметра AllowOverride установлено значение All в файле конфигурации сервера).

В качестве примера, вот файл Htaccess от одного из моих проектов:

Options +FollowSymLinks 
RewriteEngine On 

RewriteCond %{REQUEST_FILENAME} -s [OR] 
RewriteCond %{REQUEST_FILENAME} -l [OR] 
RewriteCond %{REQUEST_FILENAME} -d 

RewriteRule ^.*$ - [NC,L] 
RewriteRule ^(.*)/(.*)$ index.php [NC,L] 
RewriteRule ^(.*)/(.*)/(.*)$ index.php [NC,L] 
RewriteRule ^(.*)/(.*)/(.*)/(.*)$ index.php [NC,L] 
RewriteRule ^.*$ index.php [NC,L] 

RewriteCond %{REQUEST_FILENAME} !^(.*)\.css$ 
RewriteCond %{REQUEST_FILENAME} !^(.*)\.js$ 
RewriteCond %{REQUEST_FILENAME} !public/gateway/(.*)$ 
RewriteRule ^.*$ - [NC,L] 
+0

Это мой .htaccess RewriteEngine на RewriteCond% {REQUEST_FILENAME} -s [OR] RewriteCond% {REQUEST_FILENAME} -l [OR] RewriteCond % {REQUEST_FILENAME} -d RewriteRule ^. * $ - [NC, L] RewriteCond% {REQUEST_URI} :: $ 1^(/.+) (. +) :: \ 2 $ RewriteRule^(. *) $ - [E = BASE:% 1] RewriteRule^(. *) $% {ENV: BASE} index.php [NC, L] – user3166336

+0

Я сделал это, но теперь я не могу получить доступ к общей папке, он не отображается и появляется страница с ошибкой внутреннего сервера – user3166336

+0

. Я привел пример одного из моих файлов htaccess здесь для сравнения. – Elie

0

Как вы развернуть его? Вы использовали развертывание сервера Zend? Установили ли вы виртуальный хост? Какой URL вы звоните? Каков путь проекта?

+0

Я не использовал Zend Server У меня есть машина, что я использую в качестве сервера, основанный на Ubuntu Server и Apache. Я скопировал все файлы в каталог www. URL-адрес 192.168.1.30, путь к приложению по умолчанию является «общедоступным», когда я вхожу в 192.168.1.30/public, а фронт проиграл, но когда я хочу перейти на другой путь, например 192.168.1.30/public/authentification/login появится страница 404, и она будет одинаковой для всех других страниц. – user3166336

+0

Тогда это, безусловно, AllowOverride. Ваша конфигурация VirtualHost должна установить AllowOverride для просмотра комментария Elie. – CBergau

+0

Я сделал это, но теперь я не могу получить доступ к общей папке, он не отображается и появляется страница ошибки внутреннего сервера – user3166336

0

Пожалуйста, проверьте, если у вас есть виртуальный хост, если не создать что-то вроде этого примера:

<VirtualHost *:80> 
    ServerName helloWorld.dev 
    DocumentRoot /Users/myuser/Sites/HelloWorld/public 

    <Directory /Users/myuser/Sites/HelloWorld/public> 
     Options +FollowSymlinks +SymLinksIfOwnerMatch 
     AllowOverride All 
    </Directory> 
</VirtualHost> 

Также на ваших хостах файлы

127.0.0.1  helloWorld.dev 

Я бы рекомендовал также проверить права доступа к папке

myuser:HelloWorld myuser$ ll 
total 0 
drwxr-xr-x 8 myuser staff 272B Jan 6 11:54 application 
drwxr-xr-x 3 myuser staff 102B Jan 6 11:54 docs 
drwxr-xr-x 4 myuser staff 136B Dec 28 20:54 library 
drwxr-xr-x 4 myuser staff 136B Jan 6 11:54 public 
drwxr-xr-x 6 myuser staff 204B Jan 6 11:54 tests 
myuser:HelloWorld myuser$ pwd 
/Users/myuser/Sites/HelloWorld 
myuser:HelloWorld myuser$ 

Добавить следующее определение в файле /etc/apache2/users/myuser.conf. Если этот файл не существует создать его

<Directory "/Users/myuser/Sites/"> 
    Options Indexes MultiViews 
    AllowOverride None 
    Order allow,deny 
    Allow from all 
</Directory> 
+0

Я не знаю, как работать с виртуальный хост, потому что у меня есть машина, которую я использую в качестве сервера, мое приложение находится в этом корневом каталоге/var/www /, а url - 192.168.1.30 – user3166336

+0

Я попытался добавить виртуальный хост, но всегда в общей папке нет появляюсь, я помещаю код виртуального хоста по запросу – user3166336

+0

Я испытываю ту же проблему с общей папкой давно. Я создал файл на/etc/apache2/users с именем myuser.conf со следующим определением Опции Индексы MultiViews AllowOverride None Ord er allow, deny Разрешить все ELavicount

Смежные вопросы