Mac编译安装php5.4.45踩坑记录1

本文介绍了一种常见的PHP源码编译错误——readdir_r函数参数不足的问题及其解决方案。通过对错误信息的分析,指出在readdir_r函数调用中缺少一个参数,并给出了具体的修改方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

报错内容

 /Users/niushaogang/jkbPhpPackage/php-5.4.45/main/reentrancy.c:139:23: error: too few arguments to function call, expected 3, have 2
        readdir_r(dirp, entry);
        ~~~~~~~~~            ^
/Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/dirent.h:110:5: note: 'readdir_r' declared here
int readdir_r(DIR *, struct dirent *, struct dirent **) __DARWIN_INODE64(readdir_r);
    ^
1 error generated.
make: *** [main/reentrancy.lo] Error 1

图片

解决办法

分析这个报错,就是php源码调用readdir_r函数的时候少传了一个参数。

查看这两个文件:
    /Users/niushaogang/jkbPhpPackage/php-5.4.45/main/reentrancy.c:139:23:
    /Library/Developer/CommandLineTools/SDKs/MacOSX.sdk/usr/include/dirent.h:110:5

函数定义:
    int readdir_r(DIR *, struct dirent *, struct dirent **) 

php调用:
    readdir_r(dirp, entry)

分析函数参数,发现第三个值是第二个值的指针,好办了,修改php源码
    /Users/niushaogang/jkbPhpPackage/php-5.4.45/main/reentrancy.c:139:23

    139行,

    readdir_r(dirp, entry) 修改为 readdir_r(dirp, entry,&entry)即可编译通过
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值