Drupal 7, Fedora - dd() не работает у меня через веб

Drupal 7, Fedora - dd() не работает у меня через веб

Я назначил каталог tmp /tmp(в пути администратора Drupal admin/config/media/file-system). Эта настройка подтверждается запуском dpm(file_directory_temp());из devel/php.

Разрешения /tmp/drupal_debug.txt(включая настройки SELinux, о которых я узналздесь) выглядят так:

$ ls -ltZ /tmp/
-rwxrwxrwx. apache apache unconfined_u:object_r:httpd_sys_rw_content_t:s0 drupal_debug.txt

Далее, если я запускаю dd("Foo")из инструмента PHP CLIphpshиспользуяинтеграция Drushчтобы получить загрузочную среду Drupal, тогда я смогу использовать dd() для печати в этот файл без проблем. Нужно ли мне что-то дополнительно сделать, чтобы разрешить Apache писать в этот файл?

В журнале Apache нет ошибок, и что примечательно, проблема сохраняется даже при запуске sudo setenforce 0.

Еще один интересный момент: фрагмент PHP-теста изэтот вопрос StackOverflowвозвращает "Success" при запуске из devel/php, другими словами Drupal чувствует, что может записывать в произвольный файл в /tmp. Однако, если я изменю код до следующего вида:

 $handle = fopen("/tmp/drupal_debug.txt", "x");
 if ($handle) echo "Success!";
 else print_r(error_get_last());

затемЯ получаю это предупреждение и не получаю сообщения об успешном завершении:

Предупреждение: fopen(/tmp/drupal_debug.txt): не удалось открыть поток: Файл существует в eval() (строка 1 из /srv/www/decipher-storyscope/public_html/decipher/7f/profiles/storyscope/modules/contrib/devel/devel.module(1285): код, обработанный eval()).

Это правда, даже если яудалитьфайл /tmp/drupal_debug.txt.

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

Примечание.Функция работает нормально, если код установлен и dd()вызван в Ubuntu.

решение1

Мой системный администратор посоветовал мне поместить tmpкаталог в /srv/www.

shell> sudo mkdir /srv/www/my-project/tmp
shell> sudo chmod a+w /srv/www/my-project/tmp

и в Drupal settings.php:

$conf['file_temporary_path'] = '/srv/www/my-project/tmp';

Тогда: tail -f /srv/www/my-project/tmp/drupal_debug.txtработает.

Связанный контент