标签: php-extension

ArrayAccess如何工作?

我一直在阅读有关PHP从SPL常用的接口,如Iterator,CountableArrayAccess.但是,我不确切地知道它们是如何工作的.

他们的实现是否修改了PHP的核心功能,例如重载[]数组运算符?

我还读过有关Operator扩展的内容,它提供了以与低级语言相同的方式重载其他运算符的能力.由于Operator扩展明确地修改了PHP核心,我想知道ArrayAccess幕后是否采取相同的行动?

我是一个修补匠,因此我发现很难在不知道引擎盖的情况下使用它.

php spl php-extension

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

在 PHP 中使用 C/C++ 代码而无需编写扩展

我读到可以通过编写扩展在 PHP 中使用 C/C++ 代码。有没有更简单的方法,比如包装魔法或类似的东西(我必须说,我听说过这个词,但不太了解包装是什么)。

php c c++ php-extension

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

如何加载同一个 php 扩展的两个版本?

我正在开发的 Web 应用程序需要能够处理同一 PHP 扩展的两个不同版本。(特别是用于 Mapserver 5.6 的 MapScript 和用于 Mapserver 6.2 的 MapScript。)

在 php 执行开始之前,脚本不会知道需要加载两个版本中的哪一个。(但每个请求只需要一个扩展。)

我原本的计划是使用php内置的dl功能,但是我发现dl因为安全问题已经被禁用了。(http://php.net/manual/en/function.dl.php

有没有什么安全的方法可以在执行期间加载扩展?或者也许总是加载两者,但将它们放在不同的名称空间中,以便可以单独访问它们?

php php-extension

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

phpize和php api版本不匹配

我想memcached在我的Mac 上安装.我已经下载并安装了它.我也将它添加到php.ini中.但仍然memcached没有加载.我意识到问题是与API版本不匹配phpphpize.

这就是我做的事情 php -v

PHP Warning:  PHP Startup: memcached: Unable to initialize module
Module compiled with module API=20090626
PHP    compiled with module API=20100525
These options need to match
 in Unknown on line 0
PHP 5.4.8 (cli) (built: Oct 30 2012 19:29:58) 
Copyright (c) 1997-2012 The PHP Group
Zend Engine v2.4.0, Copyright (c) 1998-2012 Zend Technologies
Run Code Online (Sandbox Code Playgroud)

如果有人帮我解决这个问题我真的很感激.干杯.

php memcached php-extension

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

有没有办法只使用xdebug记录比X慢的执行?

我希望xdebug只追踪超过X ms或超过Y KB RAM的"跳跃",例如,每次执行时间超过100毫秒或增加内存使用量超过100KB.这样我就可以忽略数千条我不需要查看的跟踪线,并且可以使优化变得更加容易 - 因为在ZF2中,膨胀的框架需要1秒才能开始使用我们企业项目中的composer autoloader,结果在成千上万行中我真的没用.沿着这条线的某个地方,我确实发现了执行时间的较大跳跃,但不是经过长时间的滚动.

是否有一个默认选项来禁用"比X更快"执行的日志记录,或者如果没有,你知道一个帮助shell/python脚本可以只是慢速的那些吗?

为了澄清,我正在讨论通过在我的应用程序中运行xdebug_start_trace()获得的.xt文件的内容.

php debugging performance xdebug php-extension

5
推荐指数
0
解决办法
182
查看次数

在PHP中安装扩展

我正在尝试在Ubuntu 11.10上安装PHP 5.3.6的扩展.
扩展名是:php-protobuf来自https://github.com/allegro/php-protobuf.

首先,我编译它: phpize,./configure,make然后最后sudo make install.我有:

Installing shared extensions: /usr/lib/php5/20090626/

ziel@ziel:/usr/lib/php5/20090626$ ls -la protobuf.so 
-rwxr-xr-x 1 root root 113599 2013-06-13 20:48 protobuf.so
Run Code Online (Sandbox Code Playgroud)

/etc/php5/apache2/php.ini我设置:

; Directory in which the loadable extensions (modules) reside.
; http://php.net/extension-dir 
extension_dir = "/usr/lib/php5/20090626/"
extension="/usr/lib/php5/20090626/protobuf.so"
Run Code Online (Sandbox Code Playgroud)

但是php -m说没有protobuf加载扩展.

[求助]我做的一切都很好.当我通过apache执行代码时,它工作.我意识到php从控制台需要php.ini包括.

protocol-buffers php-extension

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

为什么PHP在加载从Facebook拍摄的图像时无法生成图像?

几年前,我创作了一个PHP(ZEND)模块,我今天在一些项目中仍然使用它.这个模块是基于对PHP图像处理的相当基本的(即copypasta)理解而构建的,但在一种情况下工作得很漂亮.

模块从表中提取blob数据,将其解析为图像,使用imagcopyresampled()调整其大小,然后将生成的.jpg发送到浏览器,它被称为标准控制器操作.

它似乎适用于所有情况,除非用户从Facebook保存原始图像(即右键单击Facebook图像查看器并下载到桌面然后上传到客户端站点).我自己测试了很多次并且能够复制它.我还能够通过photoshop重新保存时上传相同的图像,而不会遇到问题.

我怀疑facebook图像显示在文件中添加了一些导致我的系统中断的额外元数据.

这有解决方案吗?

PHP映像模块的代码如下:

private function _buildImage($mode) {
    //Prepare the output image
    //Currently CROP and RESIZE are using different output onstruction calls
    //So $finalImage is initialized prior to entering the mode blocks.

    $finalImage = imagecreatetruecolor($this->_width, $this->_height);
    $backgroundFillColor = imagecolorallocate($finalImage, RED, BLUE, GREEN);

    imageFill($finalImage, 0, 0, $backgroundFillColor);

    $this->_table = $this->_getTable($mode);

    $image = $this->_request->image;
    $this->_imageData = $this->_table->fetchEntryAsRow($image);

    //Set top and left to 0 to capture the top/left corner of the orignal image.
    $top = 0;
    $left = 0;


    $inputImage = …
Run Code Online (Sandbox Code Playgroud)

php php-extension

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

laravel 是否需要启用 proc_open() 和 passthru()?

我正在 KVC 网络主机的共享主机上安装 Laravel。它显示一个空白页面。我检查了日志,它说我的服务器上没有启用 proc_open() 和 passthru(),这导致了错误。我已联系我的虚拟主机寻求解决方案,但他们只能在 VPS 上启用。还有其他解决方案吗?

php shared-hosting php-extension laravel-5

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

无法在App Engine for Laravel上的php.ini上启用PHP扩展

我正在尝试启用Laravel所需的一些php扩展.该文件的php.ini文档(https://cloud.google.com/appengine/docs/php/config/php_ini)表示将php.ini文件放在应用程序的根目录中.

这就是我的php.ini样子:

extension=openssl.so
extension=pdo.so
extension=tokenizer.so
extension=mbstring.so
google_app_engine.enable_functions = "php_sapi_name, php_uname"
Run Code Online (Sandbox Code Playgroud)

当我部署它时,我的日志说:

PHP Warning:  PHP Startup: Unable to load dynamic library '/base/php_runtime/modules/openssl.so' - /base/php_runtime/modules/openssl.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/base/php_runtime/modules/pdo.so' - /base/php_runtime/modules/pdo.so: cannot open shared object file: No such file or directory in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library …
Run Code Online (Sandbox Code Playgroud)

php google-app-engine php-extension php-ini laravel

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

我可以用 C++ 开发 PDO 扩展吗?

我可以用 c++ 而不是 c 编写 PDO 扩展吗?(Windows10,PHP7.2)

这是 pdo ext 应该涵盖的内容(根据官方文档):

config.m4                  # unix build script
  config.w32                 # win32 build script
  CREDITS
  package.xml                # meta information about the package
  pdo_SKEL.c                 # standard PHP extension glue
  php_pdo_SKEL.h
  php_pdo_SKEL_int.h         # driver private header
  SKEL_dbh.c                 # contains the implementation of the PDO driver interface
  SKEL_stmt.c                # contains the implementation of the PDO statement interface
  tests/
Run Code Online (Sandbox Code Playgroud)

我可以重命名pdo_SKEL.cpdo_SKEL.cpp,并将 config.w32 中的 c 文件名更改为 cpp 吗?

我尝试了一些简单的代码和功能,它有效。但是每次当我想将 ext 注册到 pdo 时,编译都不会通过。

Error   LNK2019 …
Run Code Online (Sandbox Code Playgroud)

php pdo php-extension

5
推荐指数
0
解决办法
230
查看次数