我正在尝试使用带有URL的getimagesize和http一切都很好.但是,当尝试在https url上使用函数时,我收到"读取错误"通知,结果为false.我查了一下,我在服务器上安装了OpenSSL 0.98(因此它也应该与https一起使用).我知道我可以先下载图像,然后再使用它,但在我看来,这应该可行,而且我错过了一些东西.你能不能给我一些解决方案(除了首先下载图像然后打开它)?
先感谢您.
我最近更新了我的一台服务器,从那以后,我遇到了一些特定PHP命令的问题(见下文).我认为这是一个配置问题,但我已经研究了几件事,不知道任何进一步的事情.所以也许你们其中一个人有个好主意:
我使用以下代码以显示Intranet站点上的标准徽标或用户定义的徽标:
if(L_HEADER) {
$logo = L_HEADER;
}
else {
$logo = 'logo.png';
}
$properties = getimagesize(CONFIG_URL . 'images/' . $logo)
Run Code Online (Sandbox Code Playgroud)
L_HEADER和CONFIG_URL是具有预定义值的常量(另一个文件):
连接正常工作,这也由Apache日志文件的错误消息确认:
PHP警告:getimagesize(http://billing.intranet.opb/images/opb_beta.png):无法打开流:HTTP请求失败!
在第42行的/var/www/billing/templates/header.inc.php中找不到HTTP/1.1 404
所以第一个明显的结论是:路径是错误的.但它不是,相信我.我检查了1.000次.实际上,第一个好奇心是图像在同一文件的代码中进一步向下显示并正确引用了几行:
echo '<img src="' . CONFIG_URL . 'images/' . $logo . '"
width="' . $properties[0] . '" height = "' . $properties[1] . '" />";
Run Code Online (Sandbox Code Playgroud)
当我得到上面提到的错误时,高度和宽度都是"0",但是查看源代码,URL很好,手动访问它会打开图像,当用手动值替换宽度和高度时,图像显示得很好.
虽然更加好奇(以及我当前的finx),当将getimagesize更改为以下内容时,它的工作正常:
$properties = getimagesize($_SERVER['DOCUMENT_ROOT'] . /public_html/images/' . $logo);
Run Code Online (Sandbox Code Playgroud)
我会提到我正在使用Apache的重定向; 这就是为什么在URL中你没有看到"public_html",而在第二个例子的绝对路径中你确实看到了它.
"file_exists"也是如此.URL不起作用,同一文件的绝对本地路径.
另一个好奇心:在另一段代码中,我正在网上查看更新.在那里,我正在使用带有file_exists和fopen的"真实"公共URL.我看起来像这样,工作得非常好:
if(file_exists('http://desk.co.cr/df_stable.txt') {
if(($handle = fopen('http://desk.co.cr/df_stable.txt', 'r')) !== FALSE) { …Run Code Online (Sandbox Code Playgroud) 我是类似http://pinterest.com的一些功能 add a pin
如何从url获取宽度和高度> = 200更快的所有图像?pinterest.com将完成整个过程将近10秒,但我需要48.64秒.
require dirname(__FILE__) . '/simple_html_dom.php';
$url = 'http://www.huffingtonpost.com/';
$html = file_get_html($url);
if($html->find('img')){
foreach($html->find('img') as $element) {
$size = @getimagesize($element->src);
if($size[0]>=200&&$size[1]>=200){
echo $element;
}
}
}// cost 48.64 seconds
Run Code Online (Sandbox Code Playgroud) 我正在使用以下代码快速验证链接是否为图像...
if (getimagesize($imageLink)) {
} else {
echo "notImage";
exit();
}
Run Code Online (Sandbox Code Playgroud)
它几乎可以在所有情况下工作(例如,如果浏览器返回图像,则getimagesize将返回某些内容),但是我发现某些情况下它不起作用-例如对于此链接...
这通常适用于路透社的网站,而且我敢肯定还有其他一些网站,但是由于浏览器设法返回了图像,因此我真的很难理解为什么会出现此问题。我本来以为getimagesize需要明确声明的文件路径(例如,以.jpg,.png等结尾),但是再一次像这样的链接可以正常工作...
非常感谢任何有想法的人的想法,为什么在第一个示例中getimagesize不会返回图像,而在第二个示例中会返回图像-关于如何修改代码以适应路透社示例的任何建议也都很棒!
getimagesize() 在 Xampp(本地 PC)中失败,尽管它在实时环境中工作正常。
根据错误消息,该问题似乎与证书配置有关。我根据本文创建了自签名证书:https://shellcreeper.com/how-to-create-valid-ssl-in-localhost-for-xampp/
这从 Apache 的错误日志中删除了 SSL 警告,但 getimage() 的问题仍然相同。
http如果我使用而不是传递图像的 URL https,则调用有效。
<?php
$file = "http://webtest.test/content/uploads/img.jpg"; // Will work
$file = "https://webtest.test/content/uploads/img.jpg"; // Will not work
// ...
$img_info = getimagesize($file);
if(!$img_info) {
throw new Exception(__("The file type is not valid image (1)"));
}
?>
Run Code Online (Sandbox Code Playgroud)
收到错误:
PHP Warning: getimagesize(): SSL operation failed with code 1. OpenSSL Error messages:\nerror:1416F086:SSL routines:tls_process_server_certificate:certificate verify failed in \\xampp\\htdocs\\index.php on line 3, referer: https://webtest.test/
PHP Warning: getimagesize(): Failed to enable …Run Code Online (Sandbox Code Playgroud) 我要的是我可以在用户输入,将智能查找和添加的运行功能width和height属性,任何<img>在HTML中的BLOB标记,以避免页面-回流问题,同时图像加载.
我正在为PHP论坛编写发布脚本,其中用户的输入被清理并且通常在将其写入数据库之前变得更好以供稍后显示.作为我做的事情的一个例子,我有一个脚本将alt属性插入到图像中,如下所示:
Here are two images: <img src="http://example.com/image.png"> <img src="http://example.com/image2.png">
在通过发布脚本进行消毒后,它就变成了
Here are two images: <img src="http://example.com/image.png" alt="Posted image"> <img src="http://example.com/image2.png" alt="Posted image">
(这使得它在HTML 4下严格验证,但可能不符合alt属性的精神 - 唉!)
因此,对于我的函数,我有一个模糊的想法,即服务器需要getimagesize()在HTML块中找到的每个外部图像上运行,然后将函数生成的属性应用于<img>它运行的每个标记.我认为这个函数之前已经编写过,但我在Google或php.net文档上没有运气.我是否必须从头开始,或者是否有人意识到(相对)强大的功能,我可以使用或适应这项工作?
我在Amazon S3中托管了图片.我将URL static.example.com指向S3 Bucket.当我直接http://static.example.com/path/mypic.png在浏览器中输入URL 时,图像就存在,我也可以查看和下载.但是,当我想在PHP中获取图像的大小和尺寸时,它会显示此错误.
`getimagesize($path)`
Run Code Online (Sandbox Code Playgroud)
这就是错误.
A PHP Error was encountered
Severity: Warning
Message: getimagesize(http://static.example.com/path/mypic.png) [function.getimagesize]: failed to open stream: HTTP request failed! HTTP/1.0 404 Not Found
Filename: views/template.php
Line Number: 98
Run Code Online (Sandbox Code Playgroud)
我可以在上传时将大小存储在数据库中,但这对我来说不是解决方案,我已经在S3中拥有1000x图像.当我这样做时@ getimagesize($path),错误没有显示,但没有尺寸,没有尺寸.
我还查看了PHP文档getimagesize(URL).链接示例假设支持远程图像.
检查 php.ini
Directive Local Value Master Value
allow_url_fopen On On
Run Code Online (Sandbox Code Playgroud)
哪里错了?有没有更好的方法来获取PHP中的远程图像的图像大小和尺寸?
注意我100%确定远程图像路径是否正确.
<?php
$URL="http://cor-forum.de/forum/images/smilies/zombie.png";
list($width, $height) = getimagesize($URL);
echo 'width: '.$width.'<br>
height: '.$height;
?>
Run Code Online (Sandbox Code Playgroud)
这导致以下输出:
width:
height:
Run Code Online (Sandbox Code Playgroud)
编辑,我得到以下警告:
警告:getimagesize(http://cor-forum.de/forum/images/smilies/zombie.png):无法打开流:HTTP请求失败!HTTP/1.1 403禁止在第6行的/home/webpages/lima-city/regnum-forum/html/DATEIEN/scheisstest.php中
- 如果我使用另一张图片,它会显示正确的值
$URL='http://getfavicon.appspot.com/http://google.com?defaulticon=1pxgif';
Run Code Online (Sandbox Code Playgroud)
编辑:我想在论坛中启用外部图像,但我想先检查它们的大小.那么,我该怎么做才能获得图像的大小,其服务器是"阻止我"?
编辑:allow_url_fopen设置为ON,是的.
PHP 手册说它最多返回 7 个元素。并说 0, 1 是宽度和高度,然后是图像类型和属性。然后继续举一个例子,所以
$size=getimagesize()
Run Code Online (Sandbox Code Playgroud)
那么,它返回什么?7 个元素的数组还是只有一个?或者它是自动神奇的?其实我想要宽度,高度,类型和大小。
我有以下脚本使用PHP 5.2.6返回本地服务器上图像的高度和宽度,但不使用5.2.17在我的共享主机帐户上.
ini_set('memory_limit', '32M');
list($width, $height, $type, $attr) = getimagesize("http://images.jcrew.com/erez4/erez?src=images/eiec/39/39251/39251_WO7826.tif&tmp=prdAr3");
echo "<img src=\"http://images.jcrew.com/erez4/erez?src=images/eiec/39/39251/39251_WO7826.tif&tmp=prdAr3\" $attr alt=\"getimagesize() example\" />";
Run Code Online (Sandbox Code Playgroud)
我尝试增加memory_limit另一个问题中的建议.从其他站点获取图像的大小在本地和远程都可以正常工作,但对于此站点,仅在本地.可能会发生什么?