我想安装PHP ITL扩展,以便我可以使用它.
我需要编译它,如果是这样,我该如何编译它?我需要它适用于Windows和Linux.
我想在PHP扩展中创建并返回一个数组数组.根据我的理解,我应该使用数组元素分配空间emalloc(),但我不明白的是什么时候适合释放它.我有一个类似于这个的PHP函数:
PHP_FUNCTION(test)
{
int i;
zval **pt = emalloc(sizeof(zval*) * 10);
array_init(return_value);
for (i = 0; i < 10; ++i) {
MAKE_STD_ZVAL(pt[i]);
array_init(pt[i]);
add_index_double(pt[i], 0, 1);
add_index_zval(return_value, i, pt[i]);
}
}
Run Code Online (Sandbox Code Playgroud)
我应该在哪里释放分配的内存pt?
我正在为我的c ++库编写一个php扩展,其定义如下:
bool getPids(map<string,string> pidsMap, vector<string> ids);
Run Code Online (Sandbox Code Playgroud)
现在,我正在为这样的上述函数编写一个php包装器.
ZEND_METHOD(myFInfo, get_pids)
{
zval *idsArray;
if (zend_parse_parameters( ZEND_NUM_ARGS() TSRMLS_CC, "a",
&idsArray ) == FAILURE )
{
RETURN_NULL();
}
}
Run Code Online (Sandbox Code Playgroud)
现在我想调用getPids(),但我不知道将idsArray作为向量传递给c ++函数的正确方法.
在网上搜索之后,我找到了一个例子,其中zval数组被迭代以读取每个值,我想也许我可以用它来创建一个向量.
PHP_FUNCTION(hello_array_strings)
{
zval *arr, **data;
HashTable *arr_hash;
HashPosition pointer;
int array_count;
if (zend_parse_parameters(ZEND_NUM_ARGS() TSRMLS_CC, "a", &arr) == FAILURE) {
RETURN_NULL();
}
arr_hash = Z_ARRVAL_P(arr);
array_count = zend_hash_num_elements(arr_hash);
php_printf("The array passed contains %d elements", array_count);
for(zend_hash_internal_pointer_reset_ex(arr_hash, &pointer); zend_hash_get_current_data_ex(arr_hash, (void**) &data, &pointer) == SUCCESS;
zend_hash_move_forward_ex(arr_hash, &pointer)) {
if (Z_TYPE_PP(data) == IS_STRING) { …Run Code Online (Sandbox Code Playgroud) 所以我在Mountain Lion上运行MAMP并且我已经使用pecl安装了gmagick和imagick,两者都是相关候选者(主要是因为gmagick没有稳定版本而且想象力3.0.0没有安装,它给出了一个make错误).当我在终端中运行php -i但不在phpinfo()中时出现模块,我检查了php.ini两者都是一样的,所以这不是问题.但是我已经安装了bitset(这是一个稳定的版本) )它出现在phpinfo()和php -i中.所以我的问题是PHP有没有任何配置选项,如果它们不稳定,它们不会加载扩展?顺便说一句,在更改了ini文件后,我确实重启了我的服务器.
我在我的服务器上安装了PHP 7(因此,我没有/ etc/php5和/etc/php/7.0).当我运行我的网络应用程序时,我无法看到我之前的任何CURL(或分叉).
起初我得到了这个错误的消息:
消息:调用未定义的函数curl_init()
并在安装php7-curl之后启用它 - 在info()函数和此测试代码上获得批准:
var_dump(_isCurl());
function _isCurl(){
return function_exists('curl_version');
}
Run Code Online (Sandbox Code Playgroud)
返回TRUE.
但是当我的代码中有一个实际的CURL时,我得到了这个错误:
PHP警告:PHP启动:无法加载动态库'/usr/lib/php/20151012/php_curl.dll' - /usr/lib/php/20151012/php_curl.dll:无法打开共享对象文件:没有这样的文件或目录在第0行的未知中
在/usr/lib/php/20151012/我只有.so文件,这没有任何意义.(同样适用于/usr/lib/php5/20131226文件夹).那么它想要获得什么以及为什么从那里获得?
如何配置我的新php.ini文件以获取以前的模型设置?(如果可能,也可以使用已启用的PCNTL_FORK)如何使其与curl一起使用?到底发生了什么???
编辑04.05.2016:
好吧,我决定改变它curl.so,现在得到这个消息PHP Warning: Module 'curl' already loaded in Unknown on line 0,然后我禁用它,不知何故,卷曲现在正在工作(评论卷曲;extension:curl.so和;extension:php_curl.dll.到底是什么.
我尝试ncurses为 php7.0安装扩展,但出现此错误
/bin/bash /tmp/pear/download/ncurses-1.0.2/libtool --mode=compile cc -I. -I/tmp/pear/download/ncurses-1.0.2 -DPHP_ATOM_INC -I/tmp/pear/download/ncurses-1.0.2/include -I/tmp/pear/download/ncurses-1.0.2/main -I/tmp/pear/download/ncurses-1.0.2 -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/download/ncurses-1.0.2/ncurses.c -o ncurses.lo
libtool: compile: cc -I. -I/tmp/pear/download/ncurses-1.0.2 -DPHP_ATOM_INC -I/tmp/pear/download/ncurses-1.0.2/include -I/tmp/pear/download/ncurses-1.0.2/main -I/tmp/pear/download/ncurses-1.0.2 -I/usr/include/php/20151012 -I/usr/include/php/20151012/main -I/usr/include/php/20151012/TSRM -I/usr/include/php/20151012/Zend -I/usr/include/php/20151012/ext -I/usr/include/php/20151012/ext/date/lib -DHAVE_CONFIG_H -g -O2 -c /tmp/pear/download/ncurses-1.0.2/ncurses.c -fPIC -DPIC -o .libs/ncurses.o
/tmp/pear/download/ncurses-1.0.2/ncurses.c:36:37: error: unknown type name ‘zend_rsrc_list_entry’
static void ncurses_destruct_window(zend_rsrc_list_entry *rsrc TSRMLS_DC)
^
/tmp/pear/download/ncurses-1.0.2/ncurses.c:45:36: error: unknown type name ‘zend_rsrc_list_entry’
static void ncurses_destruct_panel(zend_rsrc_list_entry *rsrc TSRMLS_DC)
^
/tmp/pear/download/ncurses-1.0.2/ncurses.c: In function ‘zm_startup_ncurses’:
/tmp/pear/download/ncurses-1.0.2/ncurses.c:247:57: …Run Code Online (Sandbox Code Playgroud) 我在Cakephp的安装中遇到了一些问题.我希望任何人都面临同样的问题.
错误
- cakephp/cakephp 3.3.9 requires ext-intl * -> the requested PHP extension intl is missing from your system.
Run Code Online (Sandbox Code Playgroud)
根据错误消息,我删除了; 从php.ini文件但仍然得到相同的错误.
我有Mac 10.12 Sierra,Xampp 5.6.28-1版本和PHP 5.6.24版本.
我正在尝试安装 libsodium php 扩展(https://pecl.php.net/package/libsodium/1.0.6/windows)。
当我运行时php -m,libsodium 出现在列表中。但是,当我转到 phpinfo 时,它没有列出。
我还注意到 apache 给了我错误: PHP Warning: PHP Startup: Unable to load dynamic library 'C:\\xampp\\php\\ext\\php_libsodium.dll' - The specified module could not be found.\r\n in Unknown on line 0
我已经检查了多次,文件肯定存在并且匹配正确的架构和线程安全,所以我不知道还有什么可能导致这种情况。
任何帮助,将不胜感激。
我正在尝试在 macOS Mojave 上安装 Magento (2.3.0)。Magento 显示PHP Extension intl.丢失。
我尝试了以下解决方法:
cp /etc/php.ini.default php.iniextension=php_intl.dll sudo apachectl restart但是以上都没有解决。
在检查时php -v,我看到以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library
'/usr/lib/php/extensions/no-debug-non-zts-20160303/php_intl.dll' -
dlopen(/usr/lib/php/extensions/no-debug-non-zts-20160303/php_intl.dll,
0x0009): dlopen(): file not found: /usr/lib/php/extensions/no-debug-
non-zts-20160303/php_intl.dll in Unknown on line 0
PHP 7.1.19 (cli) (built: Aug 17 2018 20:10:18) ( NTS )
Copyright (c) 1997-2018 The PHP Group
Zend Engine v3.1.0, Copyright (c) 1998-2018 Zend Technologies
Run Code Online (Sandbox Code Playgroud)
/usr/lib/php/extensions/no-debug-non-zts-20160303即只有 …
我正在尝试在我的 laravel 项目上安装 laravel-excel。该库需要启用以下 php 扩展。
我相应地更改了 php.ini。但我无法下载相关的 .dll 文件以复制到 ext 文件夹。有没有地方可以下载这些?