【发布时间】:2016-05-09 00:22:07
【问题描述】:
通常我使用 Unix Apache htdocs 目录下的文本编辑器开发 PHP 网站,而使用 GD 库的网站只是“开箱即用”。
但是对于这个新客户,我被告知要使用他们现有的基础架构和 Netbeans 作为在没有 Apache 的 Windows 机器上运行 PHP 本地的 IDE。该站点最终将部署在正常的 Apache/PHP 环境下,它可以正常工作。
除了 GD 库(在 php.ini 中启用)无法正常工作外,几乎所有东西在本地都可以正常工作。使用 GD 的代码失败并出现此错误:
Fatal error: Uncaught Error: Call to undefined function imagecreate()
当我在命令行执行这个文件时:
<?php //session_start();
print_r(get_loaded_extensions());
?>
它的输出包含 GD 模块,所以它应该可以在代码中使用:
C:\Program Files\PHP>php 1.php
Array
(
[0] => Core
[1] => bcmath
[2] => calendar
[3] => ctype
[4] => date
[5] => filter
[6] => hash
[7] => iconv
[8] => json
[9] => mcrypt
[10] => SPL
[11] => pcre
[12] => Reflection
[13] => session
[14] => standard
[15] => mysqlnd
[16] => tokenizer
[17] => zip
[18] => zlib
[19] => libxml
[20] => dom
[21] => PDO
[22] => bz2
[23] => SimpleXML
[24] => xml
[25] => wddx
[26] => xmlreader
[27] => xmlwriter
[28] => openssl
[29] => curl
[30] => fileinfo
[31] => gd
[32] => gettext
[33] => gmp
[34] => intl
[35] => mbstring
[36] => exif
[37] => mysqli
[38] => Phar
[39] => pdo_mysql
[40] => PDO_ODBC
[41] => pdo_sqlite
[42] => soap
[43] => sockets
[44] => sqlite3
[45] => tidy
[46] => xmlrpc
[47] => xsl
[48] => xdebug
)
但是当我在 PHP 页面中使用相同的函数时,它不包含那么多扩展:
Array ( [0] => Core [1] => bcmath [2] => calendar [3] => ctype [4] => date [5] => filter [6] => hash [7] => iconv [8] => json [9] => mcrypt [10] => SPL [11] => pcre [12] => Reflection [13] => session [14] => standard [15] => mysqlnd [16] => tokenizer [17] => zip [18] => zlib [19] => libxml [20] => dom [21] => PDO [22] => Phar [23] => SimpleXML [24] => xml [25] => wddx [26] => xmlreader [27] => xmlwriter [28] => cli_server [29] => xdebug )
这是否意味着php.ini 中的某些内容是错误的,PHP 可以在命令行上运行,但不能来自 Netbeans?
如何在这个本地环境中启用 GD 库?
【问题讨论】:
-
检查 netbeans 正在使用的 php.ini 文件并确保那里启用了 GD 扩展。
-
比较
php --ini在命令行的输出和phpinfo()在网页中的输出。您可能会发现正在使用不同的 INI 文件。 -
在这两种情况下,它都是相同的 INI。但是机器在一夜之间重新启动,现在一切正常。不知道它是什么以及为什么。
标签: php gd netbeans-8