Почему я получаю ошибки include () и require () из одного каталога моего сайта, а не из другого?

#php #wordpress #include

#php #wordpress #включить

Вопрос:

Здесь полный новичок, так что принимайте это как хотите…

Я делаю обновление сайта прямо сейчас, и все работает нормально, за исключением…

У меня установлена WordPress в подкаталоге, и теперь, когда я запустил основной сайт, я получаю

include(/settings.php) [function.include]: failed to open stream: No such file or directory

и

include() [function.include]: Failed opening '/settings.php' for inclusion (include_path='.:')

при включении из подкаталога. Я играл с установкой разных include_path настроек, я точно знаю, что файлы там есть (они включаются без проблем из корневого каталога), и я не менял никаких разрешений или чего-либо еще во время развертывания сайта.

Пожалуйста, дайте мне знать, если этот вопрос некорректен, или неуместен, или слишком расплывчат, или что у вас есть — первое сообщение после месяцев поиска в Google и сокрытия.

заранее спасибо!

Комментарии:

1. Черт возьми, совершенно очевидный, но в то же время на мгновение хитроумно ускользающий ответ заключался в том, что установка WordPress в своей великой мудрости устанавливает корневой каталог своих файлов в свой собственный корневой каталог, поэтому попытка изменить это устранила бы эту маленькую проблему, но, вероятно, полностью уничтожила бы все, что WP попытался бы сделать на моем сайте. Разбираюсь с этим в каждом конкретном случае, заставляя include переходить на шаг к root with ../

Ответ №1:

Вероятно, вы используете php в среде с привязкой к сети, поэтому корневой путь сервера не совпадает с корневым путем скрипта.

Что касается проблемы с областью видимости переменных, не могли бы вы опубликовать какой-нибудь пример кода?

Комментарии:

1. Проблема с областью видимости переменных не является проблемой. Хотя я хотел бы потратить время на выяснение, почему это произошло, на самом деле это часть остатков тестирования основного сайта в подкаталоге beta и может быть удалено теперь, когда я перешел на root для сайта. Крафт, уходи! Для потомков я включаю эти два файла в index.php , в таком порядке: header.php , и trace.php . header.php определяет $linkHome , trace.php ссылается на него, но выдает Undefined variable: linkHome in....trace.php

2. Прохладный. Если вам понадобится помощь с проблемами области позже, я бы рекомендовал опубликовать другой вопрос с примером кода. Приветствия!

Ответ №2:

«/settings.php «указывает на корень вашего сервера. Это должно быть «settings.php «если это находится по тому же пути, и это должно быть в кавычках.

Приветствия

Комментарии:

1. он находится в корневом каталоге сервера, и ошибка удаляет из него кавычки. код include является include( "/settings.php" );

2. О, хорошо. Вы пробовали менять разрешения на нем? Запустите chmod 755 /settings.php из консоли thr

3. хорошая идея, но… не сработало. та же ошибка. файлы нормально включаются, когда я включаю их из файла в корневом каталоге, но не из этого подкаталога

4. Можете ли вы попробовать это? die( file_get_contents( «/settings.php » ) ); это должно выдать вам содержимое файла.

5. Я предполагаю, что вы, возможно, используете php с chrooted, что означает, что он обрабатывает / как каталог, который на самом деле не является корневым каталогом вашего сервера. Вам нужно выяснить, так ли это

Ответ №3:

Я бы рекомендовал добавить define('WP_DEBUG', true); в ваш wp-config.php файл и отчет с дополнительной информацией. Обязательно отменяйте это при получении информации для отладки, поскольку наличие этого на действующем сайте может представлять угрозу безопасности. Я просто просматриваю весь свой каталог WP для include( "/settings.php" ); и ничего не могу найти, что заставляет меня думать, что это может быть проблема с плагином, темой или другим пользовательским кодом. Вы могли бы устранить это, отключив все ваши плагины, проверив, работает ли сайт снова, а затем тщательно включая ваши плагины по отдельности, пока не найдете виновника.

Указывает ли полученное вами сообщение об ошибке на конкретный файл и номер строки? Это может помочь устранить проблему.

Комментарии:

1. о, это указывает именно на те строки в файлах, которые являются оскорбительными. это определенно мой пользовательский код — это часть того, как я интегрирую код блога с основным кодом моего сайта. вместо копирования файлов, составляющих оболочку для моего основного сайта, я включаю их из файлов WordPress. как указал Джуанд , в этой части моего сайта (вложенные папки WordPress) root не является корневым, и это, вероятно, установлено где-то глубоко в файлах конфигурации WP.

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