自动安装的依赖根据系统类型不同, 命令也不同。
centos下
debian/ubuntu的环境下,你需要用到apt-get命令处理一下
php 7.3以前的版本, 使用以下命令来编译到/usr/local/php下面:
当然如果有人自己经常用ldap shmop, 那这是个人才,小弟佩服。
运行configure搞糊涂时需
看一下。有些--with的语法已经不管用了, 统统要变成--enable
如果报找不到iconv错误:
需要将--with-iconv=/usr/local改为--with-iconv
小编把openssl改成libressl了, 在libressl手动编译时, 小编通过https://www.wkwkk.com/articles/configure --prefix=/usr/local/libressl的参数安装到了/usr/local/libressl, 那么就要指定openssl的新目录
将--with-openssl改为--with-openssl=/usr/local/libressl
如果想多搞几个php.ini配置文件拆成几块, 可把这一段参数--with-config-file-path=/usr/local/php/etc换成类似如下的命令
第一段还是老样子, 后一段意思是扫描指定目录下方的全部配置文档
如果你不是想要单搞命令行的, 想把fpm搞进去, 请加一段fpm配置进去, 但别忘了事先把用户建立好:
上述fpm user和group自己创建的。
还是那句话, 如果编译过程中libiconv报错, 需要将配置参数中的--with-iconv=/usr/local改为--with-iconv
或者, 在make install之前添加一行试试
接下来把php.ini的推荐配置文件(你可以在php安装包里面找), 拷贝到php配置目录下
假设你把php安装到了默认的位置/usr/local/php/
创建一个文件, 还是假设你的php被安装到了默认的路径/usr/local/php/
我们假设fpm的进程文件放在/var/run/目录下, 把配置放到/usr/local/php/etc/php-fpm.conf文件里
文件内容:
首先回到安装源目录, 例如安装源你将其解压到了/root/php-7.0.29目录下, 那么pdo_mysql插件会搁置在/root/php-7.0.29/ext/pdo_mysql这个路径下
再回想你安装的php7路径在哪里? 例如安装到了/usr/local/php7这个路径下, 那么进入到/root/php-7.0.29/ext/pdo_mysql下面:
当然如果你当前系统里面安装了mysql服务, 你可以把上面的share改成mysql的安装路径, 注意, 不是说要你指向mysql的bin目录, 而是安装路径, 例如/usr/local/mysql这样子。
接下来,需要修改php7下面的php.ini文件, 找到下面这一行:
在其下方增加一段:
有的同学就会问了, php.ini在哪里找到的? 因为本例程的实现目标只是拿php7引擎跑脚本, 所以安装后, 官方的make包里肯定是不会给你现成的php.ini的, 随便找个地方拷一份对应版本的配置文件吧,。
见站内文章 https://www.wkwkk.com/articles/44b97536a7fa2d5e.html
论头秃, php还是蛮保护同行的发量的, 不要怕, 上去一把梭哈!
前提条件, 请你在编译前, 把该准备的库都准备好, 不然可能会报各种奇奇怪怪的错误, 见本文开篇依赖安装
第一种解决方法是安装libiconv 1.14以上的版本, 如果你非要安装libiconv1.14, 则需要找到其中的一个文件libiconv-1.14/srclib/stdio.in.h这个文件并且编辑它
将之改为:
头秃的事情来了。如果有人问小编这个问题, 小编建议: 注意编译选项当中的--with-iconv,考虑换着用以下三种参数挨个尝试:
1、--with-iconv 后面什么路径都不指定
2、--with-iconv=/usr/local
3、--with-iconv=/usr/local/libiconv 或者你安装过的自定义位置
因为根据上文的记述, 你应该已经把libiconv库安装到了/usr/local/libiconv这个路径下了, 编译器逻辑一定会找得到的。如果还是不行,据洋鬼子说, 要在执行configure命令之前先输入命令:
参考原文: https://bugs.php.net/bug.php?id=80585
[2021-01-04 15:06 UTC] tomas at rybarik dot comDescription:
------------
I'm unable to compile PHP 8.0.0 with enabled iconv.
This is output from configure command:
checking for iconv support... yes
checking for iconv... yes
checking if iconv is glibc's... yes
checking if iconv supports errno... no
configure: error: iconv does not support errno
I tried compile PHP 7.4.13 with the same version of iconv (1.16), there everything is OK.
checking for iconv support... yes
checking for iconv... yes
checking if iconv is glibc's... yes
checking if iconv supports errno... yes
checking if iconv supports //IGNORE... no[2021-03-09 22:47 UTC] guillaume-php at outters dot euTomas, could you please tell us what error is logged in the config.log?
As suggested by cmg, this is a problem of detection; but in my case (FreeBSD 10.2, with "hand"-compiled GNU iconv 1.16 without pkgconfig), the detection program had no problem, rather it was its compile env that lacked a -liconv.
So this could be circumvented by running an:
export LDFLAGS="$LDFLAGS -liconv"
before the configure.
I _think_ that, like you, I had no problem compiling a PHP 7 in the same environment (so this detect failure would be a configure regression); but I cannot be certain.w
我测试过, 有时候行, 有的环境就不行。为了避免不使用容器的兄弟被恶心到,小编通过以下的写法是可以通过配置检查的
如果还是解决不了你的问题, 那证明php官方下方评论区留下的谣言可能是真的:
他们和libiconv的包管理作者关系没搞好(https://bugs.php.net/bug.php?id=80585)
这个报错提示非常明显,配置程序没有找到 libzip 库或者找到了但是版本低于 0.11,你用 yum 安装 libzip-devel 的话,安装的版本是 0.10,版本达不到要求。所以,我们需要卸载掉 yum 安装的 libzip 然后手动安装新版。
解决方法:
使之生效
解决办法:
解决办法:
gmp4.2以上的库找不到。现在已经出到6.2.1了。
在网上下载一个gmp的库, 下载:
安装基本支持m4和lzip, 因为你要解包源码
报错信息如下:
如果你需要编译带freetype支持的gd库,那么你需要先安装一下:
然后在配置php环境的时候指定参数:
OK, 接着搞就ok了。这你都不会那你可就要学了,兄弟。
一般开发的时候发现是报以下错误
使用php --ri gd命令发现gd是已经启用的, 但gd里面没有支持jpeg的说法。怎么办?首先这种情况下, 你需要重新编译php
请在debian/ubuntu系统命令里输入(有可能需要sudo)
centos系统里
重启fpm
通过增加swap分区文件的方式解决1G内存小主机无法通过编译的问题:
1、检查当前的分区情况(使用free -m或cat /proc/swaps ):
2、增加交换分区文件及大小:
检查没有swap,下面就需要增加:
判定新交换文件的大小,将大小乘以1024来判定块的大小。例如,大小为64MB的交换文件的块大小为65536,在 shell 提示下以根用户身份键入以下命令,其中的 count 等于想要的块大小。
使用以下命令来设置交换文件:
3、启用交换分区文件:
要立即启用交换文件而不是在引导时自动启用,使用以下命令:
检查增加后的交换情况:
要在引导时启用,编辑 /etc/fstab 文件来包含以下行
系统下次引导时,它就会启用新建的交换文件
再次检查添加后的情况:
目前韩天峰发布的swoole-cli, 本人还是处于观望状态。
如果是把如此大规模的编译成果, 连同关联的lib都塞进容器里显然是很大的, 这就涉及到了容器编排,说来话长,如果只是想简单粗暴本地交付一下单镜像呢? 这里拿debian/ubuntu的镜像举例:
以上命令只是粗暴地删除,有一些成对出现的同名库,名字后面多一个-dev/-devel的是开发库,可以删掉,只保留一个。个别插件的开发库没办法删除。删了php就会报错。
另外把/usr/share/doc和/var/log下的日志和文档删干净
节约点硬盘, php小版本升级需要重新编译的时候再拉。
小编发现明明在配置文件php.ini里已经写好了
但实际检查没有启用opcache呢?
原来是少了个配置
另外建议加上opcache的jit配置
答案是不用。
网上有公子哥说opcache+jit生命周期300秒的php-fpm和swoole性能差不多。可能这位小哥没实现到数据库连接池,或者没开swoole协程特性。
版权声明:
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若内容造成侵权、违法违规、事实不符,请将相关资料发送至xkadmin@xkablog.com进行投诉反馈,一经查实,立即处理!
转载请注明出处,原文链接:https://www.xkablog.com/rgzn-aibigd/39508.html