2014-02-08 3 views
3

Это ошибка, которую я нахожу трудно отлаживать, потому чтоPHP: Нет такого файла или каталога

  1. Я не испытать это на моей локальной платформы разработки, только на удаленных серверах (но не все) и

  2. Я не уверен, с чего начать искать или какие настройки PHP нужно исследовать, хотя я подозреваю, что проблема связана с удаленной серверной средой.

Дополнительная сложность заключается в том, что в большом мультимодульном сценарии я разработал, проблема только когда-либо возникает в связи с осуществлением TinyMCE. Типичная проблема заключается в:

Предупреждение: include_once (ядро/запуск/GLOBALS.php) [function.include-раз]: не удалось не удалось открыть поток: Нет такого файла или каталога в/главная/wikindx/WWW/WWW /wikindx4/core/tiny_mce/plugins/wikindxLink/dialog.php на линии 33

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

Все это прекрасно работает на моей локальной платформе и на других удаленных серверах. Излишне говорить, что GLOBALS.php находится в ядре/запуске /, но я не могу его жестко записать в /home/wikindx/www/www/wikindx4/core/startup/, потому что эти скрипты должны работать на любом сервере.

EDIT: Я действительно подозреваю, что это имеет какое-то отношение к среде tinyMCE, потому что установка сервера, вызывающая проблему, не имеет проблем с вызовом include_once (core/startup/GLOBALS.php), когда этот вызов выходит за пределы системы tinyMCE. Что-то в tinyMCE меняет путь, который ищет include_once().

+0

Скорее всего, вы разрабатываете на Windows, а сервер * Nix? В этом случае вы должны иметь в виду, что имена файлов нечувствительны к регистру в Windows, но НЕ относятся к linux: capital/lower case. Если это не так, проверьте, что такое ваш ['include_path'] (http://www.php.net/manual/en/ini.core.php#ini.include-path). Обычно я предпочитаю включать файлы, основанные на каталоге, в котором они находятся, поэтому это потребует «require __DIR __.»/../../../startup/GLOBALS.php '; ' – Wrikken

+0

Разработка на OsX. И я не могу использовать ваше жестко закодированное решение пути по причинам, указанным выше. –

+0

Я не понимаю, почему этот относительный include не работает. Или вы говорите, что вы «включаете» файл _not_ части вашего фактического пакета, поэтому отношение к пути к связанному файлу глобальных файлов не работает? (другими словами: dialog.php не является частью того же пакета, что и GLOBALS.php, но почему-то все еще знает о его существовании и хочет включить его из «где-то»?) – Wrikken

ответ

2

Я думаю, что вы ищете $_SERVER['DOCUMENT_ROOT']:

include_once $_SERVER['DOCUMENT_ROOT'].'core/startup/GLOBALS.php'; 

Находясь на данном сервере, который будет иметь значение /home/wikindx/www/www/wikindx4/

+0

Попытка этого в моей локальной системе (которая ранее работала), теперь я получаю: include_once(): Не удалось открыть '/Applications/XAMPP/xamppfiles/htdocs/core/startup/GLOBALS.php' для включения (include_path = '.:/Приложения/XAMPP/xamppfiles/lib/php ') в/Приложения/XAMPP/xamppfiles/htdocs/wikindx4/trunk. –

+0

Опять же, поскольку скрипт должен использоваться во всех ситуациях и в путях установки, я не могу жестко закодировать недостающую информацию о пути. –

+0

Обратите внимание, что 'DOCUMENT_ROOT' является _pretty_ надежным, но не для apache vhosts с директивой' VirtualDocumentRoot'. – Wrikken

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