Drupal 7, Fedora - dd() no me funciona en la web

Drupal 7, Fedora - dd() no me funciona en la web

He designado el directorio tmp /tmp(en la ruta de administración de Drupal admin/config/media/file-system). Esta configuración se confirma ejecutando dpm(file_directory_temp());desde devel/php.

Los permisos de /tmp/drupal_debug.txt(incluida la configuración de SELinux, que aprendí sobreaquí) son así:

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

Además, si ejecuto dd("Foo")desde la herramienta PHP CLIphpshutilizando elintegración drushpara obtener un entorno Drupal arrancado, entonces puedo usarlo dd() para imprimir en este archivo sin problemas. ¿Debo hacer algo adicional para permitir que Apache escriba en este archivo?

No hay errores en el registro de Apache y, en particular, el problema persiste incluso cuando ejecuto sudo setenforce 0.

Otro punto interesante: el fragmento de prueba de PHP deesta pregunta de StackOverflowdevuelve "Éxito" cuando lo ejecuto desde devel/php. En otras palabras, Drupal siente que puede escribir en un archivo arbitrario en /tmp. Sin embargo, si modifico el código a la siguiente forma:

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

entoncesRecibo esta advertencia y ningún mensaje de éxito:

Advertencia: fopen(/tmp/drupal_debug.txt): no se pudo abrir la secuencia: el archivo existe en eval() (línea 1 de /srv/www/decipher-storyscope/public_html/decipher/7f/profiles/storyscope/modules/contrib/ devel/devel.module(1285): código evaluado().

Esto es cierto incluso si yoborrarel /tmp/drupal_debug.txtarchivo.

Sin embargo, como se comenta en los comentarios, no se crea ningún archivo al ejecutar este fragmento en la web, mientras que un archivo vacíoescreado si ejecuto el mismo fragmento desde la línea de comando de PHP.

NÓTESE BIEN.La función funciona bien cuando el código está instalado y dd()llamado en Ubuntu.

Respuesta1

Recibí un consejo de mi administrador de sistemas: coloque el tmpdirectorio en /srv/www.

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

y en Drupal settings.php:

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

Entonces: tail -f /srv/www/my-project/tmp/drupal_debug.txtfunciona.

información relacionada