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 CLI 工具中運行phpsh使用鼓集成獲得引導的 Drupal 環境,然後我就可以dd() 毫無問題地列印到此檔案。我還需要做些什麼才能允許 Apache 寫入此文件嗎?

Apache 日誌中沒有錯誤,值得注意的是,即使我運行sudo setenforce 0.

另一個有趣的點:來自的 PHP 測試片段這個 StackOverflow 問題當我從 運行它時返回“成功” 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() 中(/srv/www/decipher-storyscope/public_html/decipher/7f/profiles/storyscope/modules/contrib/modules/contrib/ 的第1行) 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有效。

相關內容