drupal 6 — PHP перечисляет файлы с правами на чтение, но не может file_get_contents или require_once

Это сайт Drupal, где файл / module.inc запускает цикл над файлами в реестре и пытается require_once(), Для ряда файлов это не удается, даже если права доступа к файлу верны и файл должен быть читабельным

Я добавил отладочный код в цикл для вывода, чтобы проверить перманент и содержимое файла:

  // Debug code
print "$file perms:" . substr(sprintf('%o', fileperms($file)), -4) . "<br>";
print "$file contents:<br>" . htmlspecialchars(file_get_contents($file)) . "<hr>";

// Original Code
require_once $file;

Он выводит права доступа к файлу, а также содержимое файла, прежде чем пытаться выполнить require_once. Разные страницы не работают в разных файлах, например, выводит домашняя страница:

./sites/default/modules/cck/includes/content.token.inc perms:0755
./sites/default/modules/cck/includes/content.token.inc contents:

[filecontent]

./sites/default/modules/filefield/filefield.token.inc perms:0644
./sites/default/modules/filefield/filefield.token.inc contents:

[filecontent]

./sites/default/modules/getid3/getid3.install perms:0644
./sites/default/modules/getid3/getid3.install contents:

[NO FILE CONTENT]

Так по какой-то причине ./sites/default/modules/getid3/getid3.install якобы имеет разрешение на чтение, но это не так.

Различные пути показывают разные файлы как проблемные:

/
./sites/default/modules/getid3/getid3.install perms:0644
/admin
./sites/default/modules/webform/components/date.inc perms:0644
/user
./sites/default/modules/cck/includes/content.crud.inc perms:0755

РЕДАКТИРОВАТЬ:

Обратите внимание, что выше ./sites/default/modules/cck/includes/content.token.inc читабельно, но ./sites/default/modules/cck/includes/content.crud.inc дает ошибку, вот список каталогов для этих файлов (в том числе --context проверить на SELinux)

# ll --context
total 168
drwxr-xr-x 4 root root ?  4096 Sep 28 05:50 ./
drwxr-xr-x 8 root root ?  4096 Nov  6  2013 ../
-rwxr-xr-x 1 root root ? 72264 Nov  6  2013 content.admin.inc*
-rwxr-xr-x 1 root root ? 26307 Sep 28 03:13 content.crud.inc*
-rwxr-xr-x 1 root root ?  7181 Nov  6  2013 content.devel.inc*
-rwxr-xr-x 1 root root ?  3868 Nov  6  2013 content.diff.inc*
-rwxr-xr-x 1 root root ? 15914 Nov  6  2013 content.node_form.inc*
-rwxr-xr-x 1 root root ? 12550 Nov  6  2013 content.rules.inc*
-rwxr-xr-x 1 root root ?  6246 Nov  6  2013 content.token.inc*
drwxr-xr-x 3 root root ?  4096 Nov  6  2013 panels/
drwxr-xr-x 3 root root ?  4096 Nov  6  2013 views/

Дата изменения crud Я комментирую код для тестирования после возникновения ошибок, но он вернулся к тому, что было сейчас.

РЕДАКТИРОВАТЬ 2:

Кажется, что пытаясь получить доступ robots.txt прямо также запрещено. Не уверен, что это та же проблема, но, опять же, файл выглядит так, что он должен быть идеально читаемым.

# ll robots.txt
-rw-r--r-- 1 6226 6226 1521 Aug  6 18:07 robots.txt

РЕДАКТИРОВАТЬ 3:

Похоже, проблема была в AppArmor, который, как я полагаю, похож на SELinux. Изменение от aa-enforce в aa-complain решил проблему.

0

Решение

Возможно, какой-нибудь selinux cmd может запустить это:

semanage fcontext -a -t httpd_httpd_sys_content_t '/var/lib/myapp(/.*)?'
restorecon -R -v /var/lib/myapp

Где / var / lib / myapp — это ваш каталог ./

0

Другие решения

Похоже, проблема была в AppArmor, который, как я полагаю, похож на SELinux. Изменение от aa-enforce в aa-complain решил проблему.

0

По вопросам рекламы [email protected]