我正在尝试在Drupal中创建一个使用exec()的模块。如果我在浏览器中手动加载它或者当我将其作为su -l www-data运行时脚本运行正常,但是当Drupal作为模块运行时,exec函数不会运行。我想知道如何从中获取更多数据以更好地调试,或者如果有人可能知道为什么Drupal不会让exec运行。
当Drupal加载时,整个脚本会执行而不会给我任何警告或错误,我觉得这很奇怪。如果我在exec()之后添加or die('could not exec');
,当我加载我的drupal页面时,它确实向我显示“无法执行”而没有别的。
有什么想法吗?谢谢!
[编辑]
我通过指定我试图执行的php文件的显式路径来解决这个问题。也就是说,我改变了:
exec('php mymodule.helper',$output);
到
exec('php /var/www/mydrupal/modules/mymodule/mymodule.helper',$output);
[EDIT2]
实际上,我现在把它改为:
exec ('php ' . __DIR__ . '/mymodule.helper',$output);
完美无缺。
答案 0 :(得分:1)
我建议你首先将问题缩小到a)非CLI PHP中的某些内容,b)Drupal中的某些内容,或c)通过exec运行的命令中的某些内容。
一些测试:
echo(ini_get('safe_mode'));
。$result = exec(...); print_r($result);
答案 1 :(得分:0)
exec('php'。 DIR 。'/ mymodule.helper',$ output);