php - PHP 中的 pthread 问题
问题描述
我对 PHP 中的 pthreads 有疑问。
当我启动 apache 时,我看到如下错误:
php.exe - Entry point not found
The procedure entry point was not found _zend_hash_update@@12 in library D:\xampp\php\ext\php_pthreads.dll
当我在 CMD 中执行脚本时,我有一个警告:
PHP Warning: PHP Startup: Unable to load dynamic library 'php_pthreads.dll' (tried: D:\xampp\php\ext\php_pthreads.dll
我将 pthreadVC2.dll 复制到:
C:/windows/system32
D:/xampp/php
D:/xampp/apache/bin
我将最后一个文件 php_pthreads.dll 复制到:
D:/xampp/ext
我添加到 php.ini 行:
extension=php_pthreads.dll
我的配置:
- Windows 10 上的 XAMPP
- PHP 版本 7.3.0
- 编译器:MSVC15(Visual C++ 2017)
- 架构:x86
- 线程安全已启用
- 线程 API 是 Windows 线程
- php_threads 3.1.6 x86 从https://windows.php.net/downloads/pecl/releases/pthreads/3.1.6/下载
我在 php 7.2.x 中尝试过,但遇到了同样的问题,但出现了其他 apache 启动错误消息。也许有人可以帮助我。
解决方案
我的问题解决了!
我的建议:
- 在 xampp 上降级到 7.2.x 版本的 PHP(因为 pthreads 3.2.0 与 php 7.2 兼容)
- 下载安装php_pthreads-3.2.0(与PHP一样编译MSVC 15。链接:https ://github.com/krakjoe/pthreads/releases )
- 从 apache/bin 中删除 pthreadVC2.dll(因为不需要它)
- 复制 php.ini 并将副本另存为 php-cli.ini
- 从 php.ini 中删除 extension=php_pthreads.dll 的行(此行必须存在于 php-cli.ini 中)
尝试使用 CMD 命令: php --ini 并检查加载的配置文件。那必须设置为 php-cli.ini。并尝试命令: php -i 并在结果中找到 pthreads。
推荐阅读
- laravel - 上传 Laravel 项目时在服务器上找不到 URL
- bash - 如何在 Windows Powershell 中创建新别名以删除多个文件夹?
- javascript - 如何使用 Angular Devextreme 自定义我的代码?
- javascript - 如何使用获取和不记名令牌连接到 API?
- c# - 不要在测试中验证 JWT 过期
- asp.net - 使用 app.UseMvc() 或 app.UseEndpoints 在 asp.net core mvc 项目中设置路由有什么区别?
- blazor - 调试 Blazor WASM(Aspnet 托管)时无法使用热重载
- ios - 如何使用 UIPanGestureRecognizer 围绕自己的中心旋转 SCNNode?
- python - 如何从 Tkinter 对象入口获取数据?
- php - 在 PHP 上裁剪图像的空白部分