Codeigniter: вызов элемента функции-члена () для необъекта - PullRequest
1 голос
/ 28 декабря 2011

Я установил Codeigniter 2.1.0 локально, он отлично работает.

Но когда я загружаю его своему провайдеру, я сначала получаю:

Your system folder path does not appear to be set correctly. Please open the following file and correct this: index.php

Я могу это исправить, изменив index.php:

$system_path = "system";
$application_folder = "application";

к (почему? Мне никогда не приходилось это делать ...)

$system_path = dirname(__FILE__) . "/system";
$application_folder = dirname(__FILE__) . "/application";

Но тогда я получаю:

Fatal error: Call to a member function item() on a non-object in <path>/Utf8.php on line 47

Я могу закомментировать строку, но затем получаю похожую ошибку где-то еще.

Пожалуйста, эта проблема у моего провайдера? Или я что-то не так делаю? Я использовал CI раньше, и он работал в других местах без нареканий.

PS: Пожалуйста, не устанавливайте CI заново.

1 Ответ

1 голос
/ 15 марта 2013

Да и нет, проблема в том, что у вашего провайдера, вероятно, настройки веб-сервера не такие, как у вас.Если он это сделает, вам придется адаптировать настройки, которые соответствуют потребностям.

Основной причиной этой проблемы является разнообразие стилей, которые могут указывать путь в файловой системе.* Системы NIX используют косую черту для выражения структуры папок.На Windows-машинах это косая черта.В системах * NIX есть корень файловой системы "/", на машинах Windows есть C: /, D: / etc ... Каждая файловая система имеет различные настройки прав доступа и управления ими.

На большинствеUNIX-системы работают без проблем.Поэтому, если codeigniter попытается определить абсолютный путь каталога, в котором находится CI, из «так называемого» относительного каталога, он добьется успеха.В противном случае это не может работать, потому что он не знает, где находятся файлы, которые он хочет загрузить.

В версиях PHP также много ошибок.Например.сообщается об ошибке в PHP 5.2.0 и Windows Apache, из-за которой (с определенными правами на каталог) функция is_dir () возвращает значение False, даже если каталог присутствует и должен (и в другой системе будет) возвращать значение True.

Самый верный способ убедиться, что путь загружен правильно, - это указать абсолютный путь CI.Абсолютный путь зависит от ОС и, например,в UNIX /var/www/domain.com/system, в Windows "кто знает?"Но есть способ, как легко определить это.

Создайте index.php файл в корневой папке, к которому вы можете получить доступ с этим содержимым внутри:

<?php phpinfo(); ?>

ЕслиВы загружаете страницу, где (среди прочего) будет указан абсолютный путь в строке с помощью:

_SERVER["DOCUMENT_ROOT"] | /var/www/mydomain.com/

Теперь, если вы назначите абсолютный путь переменной $ system_path, этого должно быть достаточно.Для большей уверенности также присвойте переменную $ application_folder.

Обратите внимание, что путь к системной папке должен быть к папке system воспламенителя кода, а путь к папке приложения должен быть к * 1025папка * application .Например:

$system_path = "/var/www/mydomain.com/system";
$application_folder = "/var/www/mydomain.com/application";

После этого ваш сайт должен работать без сбоев.

(в руководстве пользователя есть некоторые упоминания об этом: http://ellislab.com/codeigniter/user-guide/installation/index.html)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...