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使用drush 集成获得引导式 Drupal 环境,然后我就可以dd() 毫无问题地打印到此文件。我是否需要执行其他操作才能允许 Apache 写入此文件?

Apache 日志中没有错误,值得注意的是,即使我运行,问题仍然存在sudo setenforce 0

另一个有趣的点:来自这个 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/devel/devel.module(1285) 的第 1 行:eval() 的代码)。

即使我删除文件/tmp/drupal_debug.txt

但是,正如评论中所讨论的那样,在 Web 上运行此代码片段时不会创建任何文件,而会创建一个空文件如果我从 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工作了。

相关内容