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

1

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

As permissões de /tmp/drupal_debug.txt (incluindo as configurações do SELinux, que eu aprendi sobre aqui ) 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") na ferramenta CLI do PHP phpsh usando o integração de drenagem para obter um ambiente Drupal autoinicializado, então eu posso usar dd() para imprimir neste arquivo sem problema. Existe algo adicional que eu preciso fazer para permitir que o Apache escreva neste arquivo?

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

Outro ponto interessante: o snippet de teste do PHP de esta pergunta StackOverflow retorna" Success "quando eu o executo a partir de devel/php , em outras palavras, o Drupal acha 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ão recebo este aviso e nenhuma mensagem de sucesso:

Warning: fopen(/tmp/drupal_debug.txt): failed to open stream: File exists in eval() (line 1 of /srv/www/decipher-storyscope/public_html/decipher/7f/profiles/storyscope/modules/contrib/devel/devel.module(1285) : eval()'d code).

Isso é verdadeiro mesmo se eu apagar o arquivo /tmp/drupal_debug.txt .

No entanto, como discutido nos comentários, nenhum arquivo é criado ao executar este fragmento pela web, enquanto que um arquivo vazio é criado se eu executar o mesmo snippet a partir da linha de comando do PHP. / p>

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

    
por Joe Corneli 08.06.2013 / 14:41

1 resposta

1

Recebi conselhos do meu administrador de sistemas: coloque o diretório tmp em /srv/www .

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

e no settings.php do Drupal:

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

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

    
por 21.08.2013 / 17:15