标签: php-extension

PHP扩展开发入门

请提出有关PHP"低级"С-modules编程接口的帮助文章或教程.

php php-extension php-internals

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

使用SWIG创建PHP C/C++扩展模块

我已经使用"老式方式"为PHP编写了一些C/C++扩展模块 - 即使用手动方式(如Sarah Golemon在她的书中所述).

这对我来说太蠢了,因为我很懒,并且想尽可能地自动化.此外,我现在使用SWIG生成Python的扩展,我开始喜欢使用它.

我正在考虑使用SWIG生成我未来的PHP扩展.我在生产服务器上使用PHP v5.2(及更高版本).

我的问题是:

  1. SWIG PHP界面是否稳定(即准备生产)?
  2. 如果你的回答是肯定-are问题1 在使用它制作的网站?
  3. 使用SWIG创建PHP扩展模块时,是否需要注意任何"陷阱"?

php c c++ swig php-extension

15
推荐指数
1
解决办法
1335
查看次数

PHP启动:无法加载动态库`curl.so` Ubuntu

PHP警告:PHP启动:无法加载动态库'/usr/lib/php/20131226/curl.so' - /usr/lib/php/20131226/curl.so:unknown中的未定义符号:zend_unset_property

我使用的是Ubuntu 14.04 LTS和PHP v5.6

在同一台机器上还有其他版本php5,php7php5.6已启用.我试图安装cURL

sudo apt-get install php5.6-curl
Run Code Online (Sandbox Code Playgroud)

现在我来了

无法加载动态库curl.so

跑完后php -i | grep ini我得到以下内容

root@ubuntu:/etc/php/5.6/apache2# php -i | grep ini
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib/php/20131226/curl.so' - /usr/lib/php/20131226/curl.so: undefined symbol: zend_unset_property in Unknown on line 0
Configuration File (php.ini) Path => /etc/php/5.6/cli
Loaded Configuration File => /etc/php/5.6/cli/php.ini
Scan this dir for additional .ini files => /etc/php/5.6/cli/conf.d
Additional .ini files parsed => /etc/php/5.6/cli/conf.d/10-mysqlnd.ini,
/etc/php/5.6/cli/conf.d/10-opcache.ini, …
Run Code Online (Sandbox Code Playgroud)

php apache curl php-extension ubuntu-14.04

15
推荐指数
3
解决办法
2万
查看次数

使用PHP zip扩展的Docker镜像构建显示"捆绑的libzip已弃用"警告

我有一个Dockerfile像这样的构建命令:

#install some base extensions
RUN apt-get install -y \
        zlib1g-dev \
        zip \
  && docker-php-ext-install zip
Run Code Online (Sandbox Code Playgroud)

我从构建输出中收到此警告:

警告:不推荐使用捆绑的libzip,将其删除.
configure:警告:某些功能(如加密和bzip2)不可用.
configure:警告:建议使用系统库和--with-libzip.

在没有这些警告的情况下安装zip扩展的正确方法是什么?

我的完整Dockerfile看起来像:

FROM php:7.2-apache

RUN apt-get clean
RUN apt-get update

#install some basic tools
RUN apt-get install -y \
        git \
        tree \
        vim \
        wget \
        subversion

#install some base extensions
RUN apt-get install -y \
        zlib1g-dev \
        zip \
  && docker-php-ext-install zip

#setup composer
RUN curl -sS https://getcomposer.org/installer | php \
        && mv composer.phar /usr/local/bin/ …
Run Code Online (Sandbox Code Playgroud)

php php-extension docker libzip

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

使用C++扩展PHP?

我有一个用PHP编写的性能密集型例程,我想将其移植到C++以提高性能.有没有办法用PHP编写插件或扩展或其他什么东西?没有手动编辑实际的PHP源代码?

php c++ plugins php-extension

13
推荐指数
2
解决办法
9800
查看次数

7z扩展为PHP?

我找不到一个,我不知道PHP Compression和Archive Extensions是否有效.

你认为我可以使用压缩流来读取7z文件中的数据吗?

UPDATE

  • 7z论坛有很多关于php扩展的请求

php compression 7zip php-extension

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

安装/激活运行MAMP的PHP"intl"扩展

好吧,我在我的MacBook Pro上运行MAMP 1.9.5,其中包括PHP 5.3.5.

"intl"扩展名未包含/激活,我尝试了很多不同的方法来安装它("./pecl install intl"似乎没有这样做),但无法使其工作.

我也"谷歌搜索我的屁股",但找不到任何提示.

谁知道怎么做?或者,或者,如何安装我自己的MySQL + Apache + PHP(并包括"intl")?

我正在尝试这样做才能运行Symfony2.所以如果您对如何在Mac上安装MySQL + Apache + PHP + Symfony2有任何建议,那也欢迎:)

php macos mamp php-extension symfony

13
推荐指数
2
解决办法
3万
查看次数

如何在php扩展中包装c ++类?

我创建了4个文件来包装一个c ++类在php Extension.Now我想运行包装的代码.但我不知道.我怎么能运行代码?

我正在http://devzone.zend.com/article/4486上关注本教程,这是我到目前为止的图表代码: vehicles.cc

#include "php_vehicles.h"
#include "car.h"

zend_object_handlers car_object_handlers;

struct car_object {
    zend_object std;
    Car *car;
};
zend_class_entry *car_ce;
void car_free_storage(void *object TSRMLS_DC)
{
    car_object *obj = (car_object *)object;
    delete obj->car; 

    zend_hash_destroy(obj->std.properties);
    FREE_HASHTABLE(obj->std.properties);

    efree(obj);
}

zend_object_value car_create_handler(zend_class_entry *type TSRMLS_DC)
{
    zval *tmp;
    zend_object_value retval;

    car_object *obj = (car_object *)emalloc(sizeof(car_object));
    memset(obj, 0, sizeof(car_object));
    obj->std.ce = type;

    ALLOC_HASHTABLE(obj->std.properties);
    zend_hash_init(obj->std.properties, 0, NULL, ZVAL_PTR_DTOR, 0);
    zend_hash_copy(obj->std.properties, &type->default_properties,
        (copy_ctor_func_t)zval_add_ref, (void *)&tmp, sizeof(zval *));

    retval.handle = zend_objects_store_put(obj, NULL,
        car_free_storage, NULL TSRMLS_CC);
    retval.handlers …
Run Code Online (Sandbox Code Playgroud)

php c++ php-extension

13
推荐指数
1
解决办法
1325
查看次数

使用已弃用的homebrew/php在OSX上安装适用于PHP 5.6的PHP扩展

今天我更新了Brew,现在我无法安装php56-extensions.

在我的Mac上安装了"php56",今天我需要安装"php56-redis",但是当我尝试安装此扩展时,Brew返回了以下错误消息.

$ brew install php56-redis

Error: No available formula with the name "php56-redis" 
==> Searching for a previously deleted formula (in the last month)...
Warning: homebrew/core is shallow clone. To get complete history run:
  git -C "$(brew --repo homebrew/core)" fetch --unshallow

Error: No previously deleted formula found.
==> Searching for similarly named formulae...
==> Searching local taps...
Error: No similarly named formulae found.
==> Searching taps...
==> Searching taps on GitHub...
Error: No formulae found in taps.
Run Code Online (Sandbox Code Playgroud)

我在homebrew/php页面上看到这个"tap"已被弃用,现在只有PHP引擎在php@5.6上迁移,但扩展不起作用.

php macos homebrew deprecated php-extension

13
推荐指数
2
解决办法
8695
查看次数

如何在OSX上使用MAMP安装php 7.2的gmp扩展

如何在OSX上使用MAMP安装php 7.2.1的gmp扩展?

我正在尝试使用带有P-256曲线和SHA-256哈希算法的椭圆曲线数字签名算法(ECDSA)使用php和此库(lcobucci/jwt)加密令牌.

运行php脚本时出错:

Symfony \ Component \ Debug \ Exception \ FatalThrowableError (E_ERROR)
Class 'Mdanter\Ecc\EccFactory' not found
Run Code Online (Sandbox Code Playgroud)

我想我错过了mdanter/ecc依赖包,所以我尝试运行以下命令.

命令运行:

composer require mdanter/ecc
Run Code Online (Sandbox Code Playgroud)

输出:

mdanter/ecc v0.5.0 requires ext-gmp * -> the requested PHP extension gmp is missing from your system
Run Code Online (Sandbox Code Playgroud)

我已经尝试了一切我能找到的研究这个错误并与MAMP相关的内容.但我无法解决这个问题.这里有没有人有专门为MAMP添加gmp php扩展的经验,并愿意帮助我吗?

注意:我不是一个非常有经验的Web开发人员,我主要创建iOS应用程序,我想在php中生成令牌,因此我可以访问Apple Music Kit API资源.

php mamp php-extension composer-php php-gmp

13
推荐指数
2
解决办法
3122
查看次数