Leo*_*los 1 php macos pthreads
我正在使用Mac OS X Mavericks,并在MAMP中运行php脚本.我正在运行的一些php脚本需要使用pthreads.
任何人都可以提供有关在Mac上安装或启用pthreads的分步说明吗?
我已经广泛搜索过,并且发现了很少甚至没有关于此的文档.我所发现的只是我可能或者可能不必从源代码重新编译php,或者只是向php.ini添加几个标志,或者我可以只使用pecl等.在终端中,我尝试pecl install pthreads并收到此错误:
无法安装,通道"pecl.php.net"的php_dir不能被当前用户写入
我现在几乎迷失了.如果可能的话,我想避免使用WAMP切换到我的Windows机器.
我不是Mac用户,但Mac和unix的构建过程是相同的,所以我可以帮助你.
要配置当前安装:
无法安装,通道"pecl.php.net"的php_dir不能被当前用户写入
这就是pecl安装失败的原因,也许检查php_dir的配置.
您可以通过以下方式确定设置的值:
pecl config-get php_dir
我不熟悉MAMP,但可能就是你没有PHP的Thread Safe版本.
您可以通过以下方式确定:
php -i | grep线程
你应该期望:
线程安全=>启用
如果您启用了线程安全,则应该是修复php_dir权限将解决您的问题.
如果不这样做,则必须重新构建或从其他源安装PHP的线程安全版本.
最后一个选择是自己构建,因为这意味着你会错过上游提供的更新,虽然我不太熟悉,不知道是否有一个维护良好的线程安全版本,我会假设有.
要自己构建,您需要使用新的安装覆盖当前安装,将源代码下载到PHP以获得所需的版本(建议使用5.5+,最新稳定,最好是所有时间).
您需要确定为当前构建启用了哪些扩展,并确定要在新构建中启用哪些扩展.
要确定启用了哪些扩展名:
php -m
记下这些:
php -m> enabled-extensions
要将构建配置为线程安全,请使用以下配置选项:
--enable-维护者,ZTS
您需要设置新安装的前缀以匹配旧的:
前缀= /旧/前缀
如果您当前的php二进制文件位于/ usr/local/bin/php,则前缀为/ usr/local.如果您当前的php二进制文件位于/ usr/bin/php,则前缀为/ usr.
您还需要匹配当前的构建配置目录和扫描目录设置:
--with-配置文件中路径= /旧/配置/路径
如果您当前的php.ini位于/usr/lib/php.ini,那么路径是/ usr/lib如果您当前的php.ini位于/etc/php.ini,那么路径是/ etc
例如,如果在启动时使用扫描目录,则具有目录/etc/php.d
--with-配置文件中 - 扫描 - DIR =的/ etc/php.d
如果您当前的扫描目录是/etc/php.d,那么目录是/etc/php.d
要配置扩展,请引用您在开头创建的列表,请使用以下命令:
./configure --help
要弄清楚开关是否可以启用您选择的扩展.如果列表中有扩展名为pecl,则可以使用pecl命令在构建完成后安装这些扩展.
通常:
--enable-extname:没有依赖外部库--with-extname:依赖于外部库在configure我们必须运行之后make,如果您有多个处理器或核心,则可能需要使用多个作业:
make -j8
允许make并行运行(最多8个作业),这大大加快了构建速度.使用与核心一样多的作业.
期间make,如果发生故障,那么故障与故障有关是显而易见的,如果您可以发现库的名称(通常是导致故障的扩展名称有帮助),那么您通常可以通过安装开发来解决错误导致失败的库的包.
开发包中包含头文件和/或静态库,通常情况下,包维护者会从普通包中省略这些内容以节省重量,因此您可以安装libxml2包但不包含头文件.
当make完成后,你将有你的编译准备安装时,请确保您有前缀的权限并执行
make install
您现在应该能够安装所需的PECL扩展
pecl安装extname
您现在可以使用PECL或从github安装:
pecl安装pthreads
| 归档时间: |
|
| 查看次数: |
5096 次 |
| 最近记录: |