出于安全原因,我以非特权用户“用户”的身份运行 fastcgi php,但看起来以不同的用户身份运行 php 提供了不同的能力,
我在 php 设置中遇到了一个奇怪的问题:
root@devz:~# su -c "php5 /www/root.php" user
PHP Warning: file_get_contents(): SSL: Success in /www/root.php on line 3
PHP Warning: file_get_contents(): Failed to enable crypto in /www/root.php on line 3
PHP Warning: file_get_contents(https://twitter.com/): failed to open stream: operation failed in /www/root.php on line 3
和
root@devz:~# su -c "php5 /www/root.php" root
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="de" lang="de">
<head>....
根目录
<?php print file_get_contents("https://twitter.com/"); ?>
系统:debian 6.0 64 位,包含所有需要的更新,php:
root@devz:~# php -v
PHP 5.3.6-8 with Suhosin-Patch (cli) (built: Apr 10 2011 22:41:22)
Copyright (c) 1997-2011 The PHP Group
Zend Engine v2.3.0, Copyright (c) 1998-2011 Zend Technologies with Suhosin v0.9.32.1, Copyright (c) 2007-2010, by SektionEins GmbH
也许有人遇到了同样的问题?如果是,请在此处留言。谢谢!
答案1
如果你正在使用 Suhosin,那么请查看本文档. Suhosin 明确阻止从其配置中不存在的地方获取 URL、文件和包含内容。
在 Debian 上,Suhosin 日志记录默认关闭,因此请查看/etc/php5/conf.d/suhosin.ini
并启用 syslog 日志记录选项,以检查是否真的是 Suhosin 阻止了您的请求。如果是这个问题,请将您想要访问的 URL 添加到同一文件中的 Suhosin 白名单中,您的 php 应该可以正常运行。