Zend MVC - Kamu klasörün kurtulmak

3 Cevap php

All, My PHP Zend MVC Application structure is like this:

billingsystem
 -application
 -design
 -public
    --index.php
    --.htaccess
 -library
    -- Zend

Uygulama yüklendiğinde, bu ortak klasör içinde index.php gider ve oradan yönlendirilen alır zaman .. ben giderek sisteme erişmek için emin kullanıcıları olmak istiyorum http://billingsystem/ yerine giden {[(1) }]. Bu ortak klasörü tutmak için Zend kuralıdır. ya da ben ondan kurtulmak ve kök dizinine dosya taşıyabilirsiniz alabilirim? Ben bunu denedim, ama Zend kütüphanesini bulmak ve sınıflar bulunuyor yüklemek mümkün değil gibi benim uygulama, sefil başarısız oldu .. benim index.php bazı kod olarak altında:

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

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

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

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

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

//Autoload Zend Classes
Zend_Loader::loadClass('Zend_Loader_Autoloader');
Zend_Loader_Autoloader::getInstance()->setFallbackAutoloader(true);

Teşekkürler

3 Cevap

ZF Eğer ortak klasöre konağın belge kök ayarı olacak varsayar. Eğer "kamu" alanı dışında uygulama kodunuzu olabilir bu yüzden bu aslında. Eğer bir apache sunucu kullanıyorsanız, sizin httpd.conf (1.x) veya apache2.conf (2.x) dosyası DocumentRoot yönergesini değiştirmek istiyorum. Sizin sunucu kendisini DocumentRoot olabilir, ve aynı zamanda her DocumentRoots sahip VirtualHosts oluşturabilirsiniz. İşte siteler için sanal ana kurma üzerinde iyi bir öğretici bulunuyor: http://apptools.com/phptools/virtualhost.php. Iyi bir örnek Zend wiki de var: http://framework.zend.com/wiki/display/ZFDEV/Configuring%2BYour%2BURL%2BRewriter

Rob Allen burada bunu başarmak için nasıl açıklar

http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/

Olduğu gibi temelde, sizin proje yapısını korumak.

Aşağıdaki ile kamu / klasör aynı düzeyde bir index.php dosyası oluşturmak

<?php 
define('RUNNING_FROM_ROOT', true);
include 'public/index.php';

Ayrıca, bu ile / ortak klasörün aynı düzeyde yeni bir. Htaccess dosyası oluşturmak

SetEnv APPLICATION_ENV development

RewriteEngine On
RewriteRule .* index.php

Sonra statik içeriğini başvuru nasıl hakkında uygulamada bazı hileler yapmanız gerekir. Rob Allen tarafından sağlanan bir uygulama için bağlantıya bakın, kendi uygulamasına özgüdür.

EDIT:

Yapılandırmanız ile aşağıdaki değiştirmek gerekir:

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

Bunu yaptıktan sonra size belge köküne kadar halkın içeriğini taşımak ve çalışması gerekir.

Olmayan kamu dizinleri DO NOT FORGET/IGNORE THE PART ABOUT THE .htaccess dosya.

İşte bu gerçekten ben açıklanan kuralı kullanmak daha iyi olacağını söyledi. Doğrusunu, ev sahibi size belge kök id anahtarı bilgisayarlar dışında dosyaları oluşturmak için izin vermez.


Tipik kongre public klasörü is belge kök ve tüm diğer klasörler belge kök dışında olmasıdır. Yani http://billingsystem.com sanal konağın ya da varsayılan ana bilgisayar yapılandırması üzerinden path/to/project/public eşleştirmek gerekir. Belge kök her şeyi Onun gerçekten iyi bir fikir. Eğer bunun dışında erişimi yok çünkü belge kök şeyi koymak yoksa o zaman yapılandırmasını değiştirmek gerekir:

index.php

APPLICATION_PATH olmalıdır realpath(dirname(__FILE__).'/application');

Sonra youll emin bir bütün web erişimi reddediyor .htaccess application, library içinde ve tests damla yapmak istiyorum.