Drupal 7, Fedora - dd() não funciona para mim na web

Drupal 7, Fedora - dd() não funciona para mim na web

Eu designei o diretório tmp como /tmp(no caminho de administração do Drupal admin/config/media/file-system). Esta configuração é confirmada executando dpm(file_directory_temp());a partir de devel/php.

As permissões de /tmp/drupal_debug.txt(incluindo as configurações do SELinux, sobre as quais aprendiaqui) são assim:

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

Além disso, se eu executar dd("Foo")a partir da ferramenta PHP CLIphpshusando ointegração drushpara obter um ambiente Drupal inicializado, posso usar dd() para imprimir neste arquivo sem problemas. Há algo adicional que preciso fazer para permitir que o Apache grave neste arquivo?

Não há erros no log do Apache e, notavelmente, o problema persiste mesmo quando executo o sudo setenforce 0.

Outro ponto interessante: o trecho de teste PHP deesta pergunta StackOverflowretorna "Sucesso" quando eu o executo devel/php, em outras palavras, o Drupal sente que pode gravar em um arquivo arbitrário em /tmp. No entanto, se eu modificar o código para o seguinte formato:

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

entãoRecebo este aviso e nenhuma mensagem de sucesso:

Aviso: fopen(/tmp/drupal_debug.txt): falha ao abrir o stream: o arquivo existe em eval() (linha 1 de /srv/www/decipher-storyscope/public_html/decipher/7f/profiles/storyscope/modules/contrib/ devel/devel.module(1285): código eval()).

Isto é verdade mesmo que euexcluiro /tmp/drupal_debug.txtarquivo.

No entanto, conforme discutido nos comentários, nenhum arquivo é criado ao executar este snippet na web, enquanto um arquivo vazioécriado se eu executar o mesmo trecho na linha de comando do PHP.

Nota.A função funciona bem quando o código é instalado e dd()chamado no Ubuntu.

Responder1

Recebi um conselho do meu administrador de sistema: coloque o tmpdiretório em /srv/www.

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

e no Drupal settings.php:

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

Então: tail -f /srv/www/my-project/tmp/drupal_debug.txtfunciona.

informação relacionada