我按照此处概述的说明进行操作:
在 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”文件
包括
Run Code Online (Sandbox Code Playgroud)^ 1 error generated. make: *** [php_intl.lo] Error 1 ERROR: `make' failed
不管怎样,做了一些研究,发现 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 …
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) 我需要将 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) 我在 Windows 计算机上使用 PHP 8.2 启动 Redis 5.3.7 时遇到困难。当我尝试启动它时,会显示一个对话框,其中包含以下消息:
“无法在动态链接库c:\Program Files\php\ext\php_redis.dll中定位过程入口点_zend_get_parameters_array_ex”
我已包含以下错误的屏幕截图:

我在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扩展声明一个等效于以下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)
这会编译,但它在构造时会产生相同的运行时错误.
我在不同的扩展上尝试了这些步骤,但我不知道为什么这不起作用.之后我不应该看到phpinfo()输出的变化吗?
步骤:
ext/ext_namephpizeconfiguremakemake install)有什么遗失的吗?我需要在php中启用某个扩展,并且没有办法重新编译整个php版本..
这段代码:
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.
我尝试按照此处的说明进行操作:https : //code.google.com/p/php-sweph/wiki/build来编译PHP扩展。我的操作系统是Windows XP。
我找不到“ phpize”来执行命令。但是,我已经安装了Pear for PHP。这是仅适用于Linux的东西,还是有一种可以在Windows中使用phpsize进行编译的方法?
我正在尝试从源代码编译的PHP 7.1.8中安装SPL_Types扩展。
我已经尝试过sudo pecl install SPL_Types并从源代码编译扩展,但是得到以下输出:
https://mega.nz/#!WE5WjajQ!QyVxMYWrsUiDF6Gq09psYBpR5Y336v26PusnlBNd8bg
我知道发布链接不是很酷,但是我无法在此处放置孔输出。