Drupal 7, Fedora - dd() funktioniert bei mir über das Web nicht

Drupal 7, Fedora - dd() funktioniert bei mir über das Web nicht

/tmpIch habe das temporäre Verzeichnis (im Drupal-Administratorpfad ) angegeben admin/config/media/file-system. Diese Einstellung wird durch Ausführen dpm(file_directory_temp());von bestätigt devel/php.

Die Berechtigungen von /tmp/drupal_debug.txt(einschließlich SELinux-Einstellungen, die ich gelernt habeHier) sind wie folgt:

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

Wenn ich es außerdem dd("Foo")aus dem PHP CLI-Tool heraus ausführe,phpshVerwendung derDrush-Integrationum eine gebootete Drupal-Umgebung zu erhalten, dann kann ich dd() problemlos in diese Datei drucken. Muss ich noch etwas tun, damit Apache in diese Datei schreiben kann?

Es sind keine Fehler im Apache-Protokoll vorhanden und das Problem besteht insbesondere auch dann weiterhin, wenn ich ausführe sudo setenforce 0.

Ein weiterer interessanter Punkt: das PHP-Test-Snippet vondiese StackOverflow-Fragegibt „Success“ zurück, wenn ich es von aus ausführe. devel/phpMit anderen Worten, Drupal glaubt, dass es in eine beliebige Datei in schreiben kann /tmp. Wenn ich den Code jedoch in die folgende Form ändere:

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

DannIch erhalte diese Warnung und keine Erfolgsmeldung:

Warnung: fopen(/tmp/drupal_debug.txt): Stream konnte nicht geöffnet werden: Datei ist in eval() vorhanden (Zeile 1 von /srv/www/decipher-storyscope/public_html/decipher/7f/profiles/storyscope/modules/contrib/devel/devel.module(1285): mit eval() erstellter Code).

Das gilt auch, wenn ichlöschendie /tmp/drupal_debug.txtDatei.

Wie in den Kommentaren erläutert, wird jedoch keine Datei erstellt, wenn dieses Snippet über das Web ausgeführt wird. Eine leere DateiIsterstellt, wenn ich denselben Snippet von der PHP-Befehlszeile aus ausführe.

Achtung.Die Funktion funktioniert einwandfrei, wenn der Code unter Ubuntu installiert und dd()aufgerufen wird.

Antwort1

Mein Systemadministrator hat mir den Rat gegeben: Legen Sie das tmpVerzeichnis in /srv/www.

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

und in Drupal settings.php:

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

Dann: tail -f /srv/www/my-project/tmp/drupal_debug.txtfunktioniert.

verwandte Informationen