标签: php-extension

在 Mac 上的 XAMPP 上安装 PHP 7.0 国际化扩展 (Intl)

我按照此处概述的说明进行操作:

在 Mac 上的 XAMPP 上安装 PHP 国际化扩展 (Intl)

Ran sudo pecl install intl 从 Cellar 中选择了正确的文件

然后发生了这个错误:

/private/tmp/pear/temp/intl/intl_error.h:24:10:致命错误:找不到“ext/standard/php_smart_str.h”文件

包括

     ^ 1 error generated. make: *** [php_intl.lo] Error 1 ERROR: `make' failed
Run Code Online (Sandbox Code Playgroud)

不管怎样,做了一些研究,发现 PHP 7.0.8 弃用了 php.smart_str.h 到 php.smart_string.h

因此,鉴于我对 C++ 的了解很少,我将 smart_string.h 复制到 smart_str.h 并将所有标头从 STRING 重命名为 string......

重新运行pecl - 不走运......更多错误......不知道.c文件在哪里并重新制作php(对走那么远并不真正感兴趣),因为无论如何我正在使用XAMPP所以结束了选项。

我的 mac 上有 php 5.5,位于 usr/local/bin 文件夹深处,所以下一步是让 pecl 使用这些文件并生成 intl.so 文件......

是吗....我有 intl.so 文件,因此将其放入 XAMPP 中的“扩展”文件夹中(以供参考:/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012 )

运行 php 并出现以下错误:

警告:PHP 启动:无法加载动态库 '/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20151012/intl.so' - dlopen(/Applications/XAMPP/xamppfiles/lib/ php/extensions/no-debug-non-zts-20151012/intl.so,9):找不到符号:_zval_used_for_init 引用自:/Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts- 20151012/intl.so …

php macos pecl php-extension intl

5
推荐指数
1
解决办法
8868
查看次数

每次我尝试安装 php-mysqli 扩展时,都会收到类似“E:软件包 'php-mysqli' 没有安装候选”的错误

suvo@Suvodip-Lenovo ~ $ sudo apt install php-mysqli

[sudo] password for suvo:

Reading package lists... Done`enter code here`

Building dependency tree    

Reading state information... Done

Package php-mysqli is a virtual package provided by:

php7.3-mysql 7.3.2-3+ubuntu16.04.1+deb.sury.org+1

php7.2-mysql 7.2.15-1+ubuntu16.04.1+deb.sury.org+1

php7.1-mysql 7.1.26-1+ubuntu16.04.1+deb.sury.org+1

php5.6-mysql 5.6.40-1+ubuntu16.04.1+deb.sury.org+1

php7.0-mysql 7.0.33-1+ubuntu16.04.1+deb.sury.org+1

You should explicitly select one to install.

E: Package `php-mysqli` has no installation candidate
Run Code Online (Sandbox Code Playgroud)

php mysql mysqli php-extension

5
推荐指数
1
解决办法
1万
查看次数

将 imagemagick 添加到我的 php 7.4 docker 中引发错误

我需要将 imagemagick 添加到我的 php 7.4 docker 中,因此在文件 Dockerfile.yml 中我添加了:

FROM php:7.4.1-apache

RUN apt-get update && \
    apt-get install -y \
        python \
        libfreetype6-dev \
        libwebp-dev \
        libjpeg62-turbo-dev \
        libpng-dev \
        libzip-dev \
        nano \
        mc \
        git-core \    
        libmagickwand-dev --no-install-recommends && \
    pecl install imagick && imagick && \
    docker-php-ext-enable imagick && \
    curl ...
    
RUN docker-php-ext-install \
        gd pdo pdo_mysql zip gmp bcmath pcntl ldap sysvmsg exif && \
    a2enmod rewrite

RUN install-php-extensions imagick
    
COPY virtualhost.conf /etc/apache2/sites-enabled/000-default.conf
Run Code Online (Sandbox Code Playgroud)

但我得到了错误:

Build …
Run Code Online (Sandbox Code Playgroud)

apache imagick php-extension docker php-7.4

5
推荐指数
1
解决办法
2万
查看次数

php8.2 找不到 Redis.dll

我在 Windows 计算机上使用 PHP 8.2 启动 Redis 5.3.7 时遇到困难。当我尝试启动它时,会显示一个对话框,其中包含以下消息:

“无法在动态链接库c:\Program Files\php\ext\php_redis.dll中定位过程入口点_zend_get_parameters_array_ex”

我已包含以下错误的屏幕截图:

错误截图

php-extension phpredis

5
推荐指数
1
解决办法
6643
查看次数

使用PHPdoc记录PHP扩展

我在C中编写了一个PHP扩展,我想创建PHPdoc文档,以便我的用户在调用我的扩展时在他们的PHP IDE(在本例中为Netbeans)中获取内联文档.

理想情况下,我希望通过在PHP代码中嵌入PHPdoc来实现这一点,以便将实现和文档保持在一起.

假设可以将PHPdocs嵌入到C中,需要哪些额外的步骤才能使文档出现在Netbeans中(就像PHP代码的PHP代码一样)?

编辑:

O'Reilly编程PHP指的/* {{{ proto是在doc生成中使用的注释格式,虽然我不确定引用的脚本是否生成PHPdocs:

{{{proto line不仅用于在编辑器中进行折叠,还由genfunclist和genfuncsummary脚本解析,这些脚本是PHP文档项目的一部分.如果您永远不会分发您的扩展,并且没有野心将它与PHP捆绑在一起,您可以删除这些注释.

php netbeans phpdoc php-extension

4
推荐指数
1
解决办法
2586
查看次数

如何将数组作为Object属性添加到PHP扩展中声明的类?

我希望我的PHP扩展声明一个等效于以下PHP的类:

class MyClass
{
    public $MyMemberArray;

    __construct()
    {
        $this->MyMemberArray = array();
    }
}
Run Code Online (Sandbox Code Playgroud)

我正在按照" 高级PHP编程 "和" 扩展和嵌入PHP "中的示例进行操作,并且我能够声明一个具有整数属性的类PHP_MINIT_FUNCTION.

但是,当我使用相同的方法声明一个数组属性时PHP_MINIT_FUNCTION,我在运行时收到以下错误消息:

PHP Fatal error:  Internal zval's can't be arrays, objects or resources in Unknown on line 0
Run Code Online (Sandbox Code Playgroud)

高级PHP编程的第557页有一个例子,说明如何声明一个创建数组属性的构造函数,但是示例代码没有编译(第二个"对象"似乎是多余的).

我修复了错误并将其修改为我的代码:

PHP_METHOD(MyClass, __construct)
{
    zval *myarray;
    zval *pThis;

    pThis = getThis();

    MAKE_STD_ZVAL(myarray);

    array_init(myarray);
    zend_declare_property(Z_OBJCE_P(pThis), "MyMemberArray", sizeof("MyMemberArray"), myarray, ZEND_ACC_PUBLIC TSRMLS_DC);
}
Run Code Online (Sandbox Code Playgroud)

这会编译,但它在构造时会产生相同的运行时错误.

php c php-extension php-internals

4
推荐指数
1
解决办法
1373
查看次数

如何使用`phpize`启用php扩展?

我在不同的扩展上尝试了这些步骤,但我不知道为什么这不起作用.之后我不应该看到phpinfo()输出的变化吗?

步骤:

  1. 解压缩php源代码并将目录更改为 ext/ext_name
  2. phpize
  3. configure
  4. make
  5. 手动将"ext_name.so"文件从"../.lib"目录移动到"php.ini"文件中指定的"extension_dir".(或做make install)
  6. 重启Web服务

有什么遗失的吗?我需要在php中启用某个扩展,并且没有办法重新编译整个php版本..

php php-extension

4
推荐指数
1
解决办法
5209
查看次数

php:删除Windows上的共享内存

这段代码:

shmop_delete();
shmop_close();
Run Code Online (Sandbox Code Playgroud)

不删除共享内存.一个实验:

$shmid = @shmop_open(1234, 'a', 0, 0);
var_dump($shmid);
Run Code Online (Sandbox Code Playgroud)

产量

bool(false)
Run Code Online (Sandbox Code Playgroud)

当然.但

$shmid = shmop_open(5678, 'c', 0644, 10);
...
shmop_delete($shmid);
shmop_close($shmid);
...
$shmid = @shmop_open(5678, 'a', 0, 0);
var_dump($shmid);
Run Code Online (Sandbox Code Playgroud)

产量

int(157)
Run Code Online (Sandbox Code Playgroud)

为什么不删除呢?如何删除共享内存?我在Windows 7上运行apache.

php shared-memory php-extension

4
推荐指数
1
解决办法
1816
查看次数

Windows下的Phpize

我尝试按照此处的说明进行操作:https : //code.google.com/p/php-sweph/wiki/build来编译PHP扩展。我的操作系统是Windows XP。

我找不到“ phpize”来执行命令。但是,我已经安装了Pear for PHP。这是仅适用于Linux的东西,还是有一种可以在Windows中使用phpsize进行编译的方法?

php windows pear php-extension

4
推荐指数
2
解决办法
9398
查看次数

从源代码编译的PHP 7.1上安装SPL_Types

我正在尝试从源代码编译的PHP 7.1.8中安装SPL_Types扩展。

我已经尝试过sudo pecl install SPL_Types并从源代码编译扩展,但是得到以下输出:

https://mega.nz/#!WE5WjajQ!QyVxMYWrsUiDF6Gq09psYBpR5Y336v26PusnlBNd8bg

我知道发布链接不是很酷,但是我无法在此处放置孔输出。

php spl php-extension

4
推荐指数
1
解决办法
775
查看次数