
apple m1芯片采用arm64架构,与传统的intel处理器(x86_64架构)截然不同。当我们在m1 mac上运行xampp这类为x86_64架构编译的应用程序时,macos的rosetta 2技术会自动进行转译,使得这些应用能够正常运行。然而,php扩展(如phalcon)作为动态链接库,其架构必须与加载它的php解释器(以及宿主应用xampp)的架构一致。
常见的问题表现为尝试通过包管理器(如MacPorts或Homebrew)安装Phalcon时,这些工具可能会默认编译出ARM64架构的扩展。当XAMPP中运行的x86_64架构PHP尝试加载一个ARM64架构的.so文件时,就会出现以下错误:
PHP Warning: PHP Startup: Unable to load dynamic library '...' (tried: ... (mach-o file, but is an incompatible architecture (have 'arm64', need 'x86_64')), ...) in Unknown on line 0
这个错误明确指出,PHP解释器需要x86_64架构的扩展,但找到的是ARM64架构的扩展,导致加载失败。
在M1 Mac上安装Phalcon时,用户通常会尝试以下几种方法,并可能遇到不同的问题:
鉴于架构不兼容是核心问题,最直接有效的解决方案是获取一个预编译的、适用于x86_64架构的Phalcon扩展文件,并手动将其配置到XAMPP环境中。
立即学习“PHP免费学习笔记(深入)”;
首先,需要确认你的XAMPP正在运行的PHP版本,以及其扩展文件的存放路径。
/Applications/XAMPP/bin/php -v
通常会显示类似 PHP 7.3.x 的版本信息。Phalcon 3.4版本通常与PHP 7.3兼容。
/Applications/XAMPP/bin/php -i | grep "extension_dir"
由于MacPorts提供了预编译的包,我们可以利用其归档来获取正确架构的扩展。
tar -xvjf php73-phalcon3-3.4.5_0.darwin_20.x86_64.tbz2
解压后,你会在./opt/local/lib/php73/extensions/no-debug-non-zts-20180731/路径下找到phalcon.so文件。
复制phalcon.so: 将解压得到的phalcon.so文件复制到XAMPP的PHP扩展目录。假设你的扩展目录是 /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731/:
cp ./opt/local/lib/php73/extensions/no-debug-non-zts-20180731/phalcon.so /Applications/XAMPP/xamppfiles/lib/php/extensions/no-debug-non-zts-20180731/
请根据你实际的PHP版本和扩展目录路径进行调整。
配置php.ini:
; Enable Phalcon extension extension=phalcon.so
/Applications/XAMPP/bin/php -m | grep phalcon
如果输出中包含 phalcon,则表示扩展已成功加载。
<?php phpinfo(); ?>
通过遵循上述步骤,并特别关注架构兼容性,你可以在Apple M1 Pro设备上的XAMPP环境中成功安装并启用Phalcon PHP扩展。
以上就是在Apple M1 Pro上为XAMPP安装Phalcon PHP扩展的指南的详细内容,更多请关注php中文网其它相关文章!
PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号