【发布时间】:2026-01-30 15:25:01
【问题描述】:
<?php
error_reporting(E_ALL);
if(file_get_contents("http://localhost/antispam/img.php") == false)
print 'Error';
else
print 'Read successfully';
?>
这总是打印error。 img.php 返回一个 php 生成的图像,但上面的代码无法读取。我的 php.ini 看起来很典型,没有显示错误,我错过了什么?
注意allow_url_fopen已经被设置为On和1
img.php
$code = 'default';
header("Content-Type: image/jpeg");
$im = @imagecreate(200, 50) or die ("Cannot Initialize new GD image stream");
$bgColour = imagecolorallocate($im, 0, 0, 0);
$textColour = imagecolorallocate($im, 233, 14, 91);
$wSpace = 30; $hSpace = 20;
$prevW = 0;
for($i = 0; $i < strlen($code); $i++)
{
$w = $prevW + rand(20, $wSpace);
imagestring($im, 5, $w, rand(0,$hSpace), substr($code, $i, 1), $textColour);
$prevW = $w;
}
imagejpeg($im);
imagedestroy($im);
【问题讨论】:
-
正如@raina77ow 所说,除非设置了
allow_url_fopen,否则您无法通过http访问。另一种选择是通过本地文件路径访问该文件,类似于/var/www/antispam/img.php的内容,或者您服务器上的任何路径。 -
我已经检查了我的 php.ini,一切似乎都很好。该文件是本地文件,因为它与所述文件位于同一目录中,但我理解你的意思。
-
我的allow_url_fopen默认设置为
On。 -
如果你把它改成
file_get_contents("http://localhost/antispam/img.php") === false)...会发生什么 -
等等,如果
=== false返回false,那么这个函数正在工作,它只是从页面中读取任何内容。你确定img.php正确创建了图像吗?
标签: php file-get-contents