【问题标题】:Why do I get an "attempted to call function imagecreatefrompng" error while gd is enabled?为什么在启用 gd 时出现“尝试调用函数 imagecreatefrompng”错误?
【发布时间】:2020-12-13 14:43:56
【问题描述】:

我目前正在尝试使用以下代码从 url 将图像保存在我的本地服务器上:

private function getDragontailImage() {
   /* load image from the url */
   $img = imagecreatefrompng('https://ddragon.leagueoflegends.com/cdn/10.25.1/img/champion/Aatrox.png');

   /* Save the image on my local server but the execution actualy does not reach this point */
   file_put_contents('my/local/path', $img);
}

不幸的是,发生了以下错误:

试图从命名空间调用函数“imagecreatefrompng” “应用\控制器”。

这个命名空间确实是我调用函数的地方。据我了解,这个错误经常发生在语法错误的时候。我将我的语法与php manual 中的语法进行了比较,但我仍然看不出我做错了什么。

到目前为止,我还检查了以下几点:

  • 我的 composer.json 文件包含 "ext-gd": "*" - 这是函数所必需的。
  • 我的 php.ini 文件有 allow_url_fopen = On 以便能够使用 url 作为参数。
  • 在我的 php infos 中,我可以看到 GD 支持和 PNG 支持已启用。
  • 这些更改后,我已重新启动本地服务器。

我不知道这是否是重要信息,但我使用此命令行来运行我的本地服务器:

php -S localhost:8000 -t public/

我错过了什么?

【问题讨论】:

  • 也许可以尝试使用$img = \imagecreatefrompng('https://ddragon.leagueoflegends.com/cdn/10.25.1/img/champion/Aatrox.png'); 来强制 PHP 命名空间解析在全局中查找。
  • phpinfo(); 的结果可能会有所帮助。
  • @LeviathanCalume \imagecreatefrompng 提示无效。关于phpinfo();,哪些信息是相关的?顺便说一句,我注意到当我运行该函数时 gd 部分不存在,但是当我从 MAMP 咨询“php infos”选项卡时。是不是说gd没有正确安装?

标签: php


【解决方案1】:

我不是 MAMP 或任何 (L/W/M/X)AMP 版本的专家,但也许您应该通过这种方式解决您的问题:

在您的phpinfo(); 执行结果中,您应该有一个配置文件 (php.ini) 路径条目,从该路径解析 php.ini。

那么在这个 php.ini 文件中应该有一个注释行,例如;extension=gd.so。您必须取消注释此行(删除分号)才能使gd 处于活动状态。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-01-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-10-12
    • 1970-01-01
    • 2017-05-06
    • 1970-01-01
    相关资源
    最近更新 更多