Zend Framework на виртуальном хостинге

Я новичок в Zend Framework. Я хотел бы знать, как реализовать Zend Framework на виртуальном хостинге. Из-за структуры папки Zend Framework все файлы представлений помещаются в «общедоступный» файл папка.

предполагать

& Quot; / & Quot; для меня это основная корневая папка & Quot; / общественного & Quot;

так что URL становится & quot;Http: // сайт / государственный /, ... .бла бла ... & quot;

это правильно?

или есть другой способ?

У меня нет разрешения на создание виртуального хоста.

так что делать?

Я надеюсь, что вы поняли мой вопрос. Если нет, пожалуйста, спросите меня.

Спасибо!

Ответы на вопрос(12)

Вам следует поместить папку Public вашего проекта в папку www на хосте, чтобы ваш адрес стал yourdomain.com/. Ваша папка с исходным кодом, такая как библиотека, приложения ... должна находиться на одном уровне с папкой www, а не внутри нее. Этот метод будет способствовать безопасности вашего сайта

 07 авг. 2013 г., 13:29
Это может быть самым подходящим ответом.

, , , Как Magento использует Zend Framework ??? Я использую XAMPP, и я установил Magento локально, без изменения php..conf или виртуального хоста.

и благодаря этой теме я смог найти решение. Я использую zf2. Так что все, что мне нужно было сделать, - это иметь связанные с Zend файлы в каталоге, который мы можем назватьsrc, Этот каталог будет находиться в общедоступном или корневом каталоге (например,/www)

Create a .htaccess file in the 'src' dir and add the Deny from All directive.

In the index file, change the working directory to the src folder by doing the following:

define('SRC_ROOT', 'src');
chdir(SRC_ROOT);

... и ты в порядке!

ку, например, "src". - и используйте .htaccess Deny от All. Вам придется совмещать несколько путей, но это работает нормально.

Роб Аллен написал хорошее решение

Я используюZend Framework 2 и это сработало для меня. Хотя я не сделал часть"Referencing public facing files" сверху ссылка.

Я просто изменил код в моемlayout.phtml от:

$basePath = $this->basePath();

чтобы:

$basePath = $this->basePath();
if (defined('RUNNING_FROM_ROOT')) {
    $basePath .= 'public/';
}
 19 дек. 2012 г., 16:31
& # X425; & # x43E; & # x440; & # x43E; & # x448; & # Фон X435; & # Фон X435; & # X440; & # Фон X435; & # x448; & # Фон X435; & # x43D; & # x438; & # ;. Фон X435 & # X410; & # X432; & # x44B; & # X43D; & # Фон X435; & # X437; & # x43D; & # X430; & #; & Фон X435 # x442; & # Фон X435; & # X43A; & # X430; & # x43A; & # X43C; & # x43E; & # x436; & # x43D; & # x43E; & # X443; & # X441; & # x442; & # X430; & # x43D; & # x43E; & # X432; & # x438; & # x442; & # x44C; & # X44D; & # x442; & # x43E; & # x442;basePath & # x442; & # x430; & # x43A ;, & # x447; & # x442; & # x43E; & # x431; & # x44B; & # X43D; & # X430; & # X432; & # X441; & # x451; & # X43F; & # x440; & # x438; & # x43B; & # x43E; & # x436; & # Фон X435; & # x43D; & # x438; & # Фон X435; & # x43E; & # x43D; & # X431; & # x44B; & # x43B; & # X43E; & # x434; & # x438; & # x43D; & # X430; & # x43A; & # x43E; & # X432; & # x44B; & # x439 ;? & # X41F; & # x440; & # x438; & # X442; & # X430; & # x43A; & # x43E; & # x43C; & # X440; & # Фон X435; & # x448; & # Фон X435; & # x43D; & # x438; & # x438; & # X43F; & # x440; & # x438; & # x434; & # Фон X435; & # x442; & # X441; & # x44F; & # X432; & # X43A; & # X430; & # x436; & # x434; & # x43E; & # x43C; & # x432; & # x438; & # x434; & # x435 ;, & # x433; & # x434; & # x435; & # Фон X435, X441 & #; & # x442; & # x44C; & # X432; & # x44B; & # x437; & # x43E; & # X432;$this->basePath(), & # x43F; & # x440; & # x43E; & # x43F; & # x438; & # x441; & # x44B; & # x432; & # x430; & # x442; & # x44C; & # X44D; & # x442; & # x43E; & # x442; & # X43A; & # x43E; & # x434 ;. & # X410; & # X445; & # x43E; & # x442; & # Фон X435; & # x43B; & # x43E; & # X441; & # x44C; & # X431; & # x44B; & # X432; & # X43E; & # x434; & # x43D; & # x43E; & # x43C; & # X43C; & # Фон X435, X441 & #; & # x442; & # Фон X435; & # X433; & # x434; & # Фон X435; - & # x442; & # x43E; & # X437; & # X430; & # x434; & # X430; & # x442; & # x44C; & # Фон X435; & # x433; & # x43E; & # X438; & # X432; & # Фон X435; & # x437; & # x434; & # Фон X435; & # X431; & # x44B; & # x43E; & # x43D; & # X431; & # x44B; & # x43B; & # x43E; & # x434; & # x438; & # x43D; & # X438; & # X442; & # x43E; & # x442; & # X436; & # ;. Фон X435
 07 авг. 2013 г., 13:26
Для этого потребуется отредактировать все файлы phtml :( любой более короткий метод для более быстрого обхода?

и я, наконец, в конечном итоге с помощьюРаствор Лоренцо Альбертона, Надеюсь, что это помогает другим быстрее найти решение.

RewriteEngine On

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

разрабатывайте свои приложения так, чтобы index.php находился в вашем корне (даже лучше - всегда определяйте PUBLIC_PATH -dirname(__FILE__); в вашем index.php и сделайте ссылки относительно этой константы). Вместе с папками приложений и библиотек. Вы можете легко сделать их недоступными извне, используяdeny from all в .htaccess.

Константа PUBLIC_PATH также помогает, когда ваша публикация не является публичной. (публичный html или / public html / www (в моем случае))

/ httpd-vhosts.conf. Если вы используете httpd-vhosts.conf, убедитесь, что этот файл включен в ваш основной файл httpd.conf. Некоторые дистрибутивы Linux (например, Ubuntu) содержат пакет Apache, поэтому файлы конфигурации хранятся в / etc / apache2 и создают один файл для каждого виртуального хоста в папке / etc / apache2 / sites-enabled. В этом случае вы поместите блок виртуального хоста ниже в файл / etc / apache2 / sites-enabled / zf2-tutorial.

Убедитесь, что NameVirtualHost определено и имеет значение & # x201C; *: 80 & # x201D; или аналогичные, а затем определить виртуальный хост по этим направлениям:

Setting up the virtual host is usually done within httpd.conf or extra/httpd-vhosts.conf. If you are using httpd-vhosts.conf, ensure that this file is included by your main httpd.conf file. Some Linux distributions (ex: Ubuntu) package Apache so that configuration files are stored in /etc/apache2 and create one file per virtual host inside folder /etc/apache2/sites-enabled. In this case, you would place the virtual host block below into the file /etc/apache2/sites-enabled/zf2-tutorial.

Ensure that NameVirtualHost is defined and set to “*:80” or similar, and then define a virtual host along these lines:

 <VirtualHost *:80>
     ServerName zf2-tutorial.localhost
     DocumentRoot /path/to/zf2-tutorial/public
     SetEnv APPLICATION_ENV "development"
     <Directory /path/to/zf2-tutorial/public>
         DirectoryIndex index.php
         AllowOverride All
         Order allow,deny
         Allow from all
     </Directory>
 </VirtualHost>

Make sure that you update your /etc/hosts or c:\windows\system32\drivers\etc\hosts file so that zf2-tutorial.localhost is mapped to 127.0.0.1.

Убедитесь, что вы обновили файл / etc / hosts или c: \ windows \ system32 \ drivers \ etc \ hosts, чтобы zf2-tutorial.localhost был сопоставлен с 127.0.0.1.

 09 февр. 2017 г., 19:58
В виртуальном хостинге DONT CANT EDIT и DONT CANT ADD не добавляют виртуальный хост.
Решение Вопроса

что лучший способ - это удалить .htaccess из общедоступного каталога (структура каталога Zend Framework) и поместить его со следующим содержимым в ваш & quot; root & quot; каталог:

 
RewriteEngine On

RewriteRule ^.htaccess$ - [F] RewriteCond %{REQUEST_URI} ="" RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.$ RewriteRule ^(.)$ /public/$1 RewriteCond %{REQUEST_FILENAME} -f RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

 09 мая 2012 г., 15:54
это не работа с модулями! Если я перехожу на www.domain.com/admin, где admin является модулем, я перенаправляюсь на www.domain.com/public/admin. как это исправить пожалуйста?
 03 сент. 2009 г., 14:30
привет - просто интересно, вы можете заметить что-то не так с деталями, которые я разместил внизу этой темы?
 10 дек. 2009 г., 08:10
Возможный вопрос n00b: Как это повлияет на маршрутизацию ZF? То есть, не будет "/ public" Префикс будет частью URL, который видит ZF (я думаю, через объект $ request)? В результате все маршруты ZF теперь должны быть «/ public» известно? Это было бы довольно нежелательно, не так ли?
 19 апр. 2012 г., 13:05
Зависит от того, что я установил его на моем & quot; index.php & quot; Вы можете сделать это в .htaccess ..
 19 апр. 2012 г., 11:04
где поставить настройки среды?

c):

RewriteEngine On

# Exclude some directories from URI rewriting
#RewriteRule ^(dir1|dir2|dir3) - [L]

RewriteRule ^\.htaccess$ - [F]

RewriteCond %{REQUEST_URI} =""
RewriteRule ^.*$ /public/index.php [NC,L]

RewriteCond %{REQUEST_URI} !^/public/.*$
RewriteRule ^(.*)$ /public/$1

RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^.*$ - [NC,L]

RewriteRule ^public/.*$ /public/index.php [NC,L]

И оставьте .htaccess, который был в каталоге pubc, где он был.

Таким образом, у вас будет 2 файла .htaccess, один в общедоступном каталоге (обычный из документации Zend Framework) и второй в вашем базовом пути (тот, который я опубликовал выше).

 11 окт. 2010 г., 12:52
Я пробовал это, но он не находит другие каталоги, которые ссылаются на папку приложения за пределами общей папки. Другие простые страницы работают
 03 сент. 2009 г., 14:31
привет - просто интересно, вы можете заметить что-то не так с деталями, которые я разместил внизу этой темы?

это не лучшая идея для запуска приложений Zend Framework на общем хостинге. Я очень рекомендую получить виртуальный частный хостинг (VPS). Есть очень хорошие и недорогие хостинги с Zend Framework и другими фреймворками, которые уже установлены и регулярно обновляются. Я нахожусь наservergrove и это было здорово до сих пор!

Но это не означает, что вы не можете заставить его работать на виртуальном хостинге. Вы просто должны работать с .htacess. Поместите содержимое общей папки в ваш webroot и настройте пути в bootstrap.php, убедитесь, что все другие папки не могут быть доступны напрямую, и используйте обычный подход ZF для маршрутизации всего через ваш index.php.

 08 мая 2010 г., 19:22
Детали моей собственной реализации этого подхода:bit.ly/btQGbh

есь, на SO), но ни один из них не помог мне. Итак, я наконец нашел решение - .htaccess для root dir:

RewriteEngine on
RewriteBase /
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule !\.(js|ico|txt|gif|jpg|png|css)$ index.php

Это изhttp://framework.zend.com/wiki/display/ZFDEV/Configuring+Your+URL+Rewriter и index.php в корневом каталоге:

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

Это изhttp://akrabat.com/zend-framework/zend-framework-on-a-shared-host/ И это работает для меня, даже если в корневой папке есть другой каталог проекта - например, форум или около того. Думал, что это может быть полезно для кого-то :)

Ваш ответ на вопрос