Zend Framework Hosting - не может включать bootstrap.php

0

Я использую решение для хостинга для своего приложения Zend Framework, но не могу загрузить его для загрузки файла application/bootstrap.php.

Когда я подключаюсь к серверу, моим корнем doc является /webspace/httpdocs/euro.millionsresults.com

Я разместил приложение, общедоступное, библиотечное и т.д. dirs в этом каталоге.

Затем я создал.htaccess, согласно http://akrabat.com/zend-framework/zend-framework-on-a-shared-host/

/webspace/httpdocs/euro.millionsresults.com/.htaccess

RewriteEngine On
RewriteRule .* index.php

Это переписывает все в файл index.php, который затем включает в себя файл public/index.php ZF, который является правильным и работает нормально. Файл index.php:

/webspace/httpdocs/euro.millionsresults.com/index.php

<?php
include 'public/index.php';

Если я поставлю эхо в файле public/index.php, он отлично работает, показывая, что public/index.php теперь вызывается при попытке получить доступ к сайту.

Проблема в том, что файл public/index.php должен включать файл.. /application/bootstrap.php:

/webspace/httpdocs/euro.millionsresults.com/public/index.php

<?php
echo "this is working";
require('../application/bootstrap.php');

Однако приложение /bootstrap.php не включается.

Если я положил кубик в самый верх приложения /bootstrap.php, ничего не получится.

Я попробовал следующее для public/index.php:

требуется ( '../../../приложения /Bootstrap.php'); требуется ( '/Webspace/httpdocs/euro.millionsresults.com/приложение /Bootstrap.php');

Но ничего не работает в том числе application/bootstrap.php.

Кто-нибудь знает, что делать здесь? Это дешевый хост, на котором я нахожусь, без доступа к php.ini.

Дополнительная информация:

Проблема, похоже, связана с include_path. Когда я получаю get_include_path(), у меня есть:

:/php/includes:/usr/share/pear:/usr/libexec/php4-cgi/share/pear:/opt/alt/php55/usr/share/pear:/opt/alt/php54/usr/share/pear:/opt/alt/php53/usr/share/pear

Я могу set_include_path(), но к чему я его устанавливаю?

Я пытался:

set_include_path('/webspace/httpdocs/euro.millionsresults.com/application' . PATH_SEPARATOR. get_include_path());
set_include_path('/../../../application' . PATH_SEPARATOR . get_include_path());
set_include_path('../application' . PATH_SEPARATOR . get_include_path());

Ни одна из них не работает, т.е. Когда в моем общедоступном /index.php файле есть следующее: я всегда получаю "не существует":

<?php
echo "In file public/index.php <br>";

set_include_path('/../../../application' . PATH_SEPARATOR . get_include_path());

echo get_include_path();

if (file_exists('/../application/bootstrap.php')){
    echo "<br>exists";
}
else {
    echo "<br>does not exist";
}

Не имеет значения, какой файл я проверяю на наличие - любой файл в папке приложения или какая-либо папка, не публичная, не найдена.

Теги:
zend-framework

1 ответ

1
Лучший ответ

В вашем public/index.php файле эта строка:

require('../application/bootstrap.php');

предполагает, что ваш текущий рабочий каталог является public/ и что по отношению к этому директору, один dir вверх, есть application/bootstrap.php - relative require calls относятся к текущему рабочему каталогу или к include_path. Кажется, что код ZF предполагает, что public/ является корнем документа, что неверно в вашем случае.

Обычно в веб-средах текущий рабочий каталог является корневым документом. Поэтому в вашем случае вы можете захотеть изменить require('../application/bootstrap.php') на:

require('application/bootstrap.php');

Если это не сработает, я предлагаю узнать, что текущий рабочий каталог находится в каталоге public/index.php, запустив что-то вроде:

var_dump(getcwd(), __DIR__);

(если ваша версия PHP устарела, замените __DIR__ на dirname(__FILE__))

и, чтобы ваш запрос require от этого.

  • 0
    Ах, вот и все! Спасибо

Ещё вопросы

Сообщество Overcoder
Наверх
Меню