我正在尝试让 drupal 的 simpletest 模块运行,它依靠 php-curl 来获取其请求。
当我以 root 用户身份执行以下操作时,它运行正常:
root@server:~# php -a
Interactive mode enabled
<?php
$ch = curl_init("http://testsite.drupal.dev/user");
$fp = fopen("example.html", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
root@server:~# cat /root/example.html
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<!-- Blah Blah -->
</body>
</html>
root@server:~#
但是当 www-data 用户执行此操作时,却失败了:
root@server:~# su - www-data
www-data@server:~$ php5 -a
Interactive mode enabled
<?php
$ch = curl_init("http://testsite.drupal.dev/user");
$fp = fopen("example.html", "w");
curl_setopt($ch, CURLOPT_FILE, $fp);
curl_setopt($ch, CURLOPT_HEADER, 0);
curl_exec($ch);
curl_close($ch);
fclose($fp);
?>
www-data@server:~$ cat example.html
www-data@server:~$
有人见过这种情况吗?我不知道该如何修复。任何帮助我都感激不尽!:)
环境:Debian Etch / Apache2 / php5
答案1
抱歉。这不是权限问题。事实证明 www-data 用户在其 ~/.profile 和 /etc/apache2/envvars 中设置了一个旧的 http_proxy,但该设置已不存在。
我已将其注释掉,现在它可以工作了:)