Invalid library (maybe not a PHP library)

Add simplexml to php.

When I input command ‘php -m’, output ‘Invalid library (maybe not a PHP library)’.

Afer I re-make ext/simplexml, probem still appear.

A few minutes, I find php/modules contain simplexml.so, however make install create other path.

I re-make again:

pipize –clean

pipize

./configure –with-php-config=/usr/local/php/bin/php-config

make

make install

php -m, that is ok

Linux下后台运行几种方法

From: https://blog.csdn.net/u013253075/article/details/121979156

1、nohup
将程序以忽略挂起信号的方式运行起来

补充说明
nohup命令 可以将程序以忽略挂起信号的方式运行起来,被运行的程序的输出信息将不会显示到终端。
无论是否将 nohup 命令的输出重定向到终端,输出都将附加到当前目录的 nohup.out 文件中。
如果当前目录的 nohup.out 文件不可写,输出重定向到$HOME/nohup.out文件中。
如果没有文件能创建或打开以用于追加,那么 command 参数指定的命令不可调用。
如果标准错误是一个终端,那么把指定的命令写给标准错误的所有输出作为标准输出重定向到相同的文件描述符。

简单实例:
nohup command &

指定输出实例
nohup command > myout.file 2>&1 &

其他相关命令,比较常用
ctrl + z #可以将一个正在前台执行的命令放到后台,并且处于暂停状态。
fg #将后台任务切换到前台执行
bg #将一个在后台暂停的命令,变成在后台继续执行。如果后台中有多个命令,可以用bg %jobnumber将选中的命令调出
jobs #查看后台运行的状态,jobs -l选项可显示所有任务的PID
ps -ef | grep command 或者 ps aux | grep command #查看进程
kill -9 进程id #杀掉对应的进程,
更高级的用法如下:
ps aux | grep command | grep -v grep | awk ‘{print $1}’ | xargs kill -9 #这个表示直接通过command获取进程id并直接kill掉

2、screen
用于命令行终端切换

a、会话恢复
只要Screen本身没有终止,在其内部运行的会话都可以恢复。这一点对于远程登录的用户特别有用——即使网络连接中断,
用户也不会失去对已经打开的命令行会话的控制。只要再次登录到主机上执行screen -r就可以恢复会话的运行。
同样在暂时离开的时候,也可以执行分离命令detach,在保证里面的程序正常运行的情况下让Screen挂起(切换到后台)

b、多窗口
在Screen环境下,所有的会话都独立的运行,并拥有各自的编号、输入、输出和窗口缓存。用户可以通过快捷键在不同的窗口下切换,
并可以自由的重定向各个窗口的输入和输出。Screen实现了基本的文本操作,如复制粘贴等;还提供了类似滚动条的功能,
可以查看窗口状况的历史记录。窗口还可以被分区和命名,还可以监视后台窗口的活动。 会话共享 Screen可以让一个或多个用户
从不同终端多次登录一个会话,并共享会话的所有特性(比如可以看到完全相同的输出)。它同时提供了窗口访问权限的机制,
可以对窗口进行密码保护。

c、screen的安装
yum install -y screen

基本语法
screen -AmRvx -[ls -wipe][-d <作业名称>][-h <行数>][-r <作业名称>][-s ][-S <作业名称>]

选项
-A  将所有的视窗都调整为目前终端机的大小。
-d <作业名称>  将指定的screen作业离线。
-h <行数>  指定视窗的缓冲区行数。
-m  即使目前已在作业中的screen作业,仍强制建立新的screen作业。
-r <作业名称>  恢复离线的screen作业。
-R  先试图恢复离线的作业。若找不到离线的作业,即建立新的screen作业。
-s  指定建立新视窗时,所要执行的shell。
-S <作业名称>  指定screen作业的名称。
-v  显示版本信息。
-x  恢复之前离线的screen作业。
-ls或–list  显示目前所有的screen作业。
-wipe  检查目前所有的screen作业,并删除已经无法使用的screen作业。

常用screen参数
screen -S yourname -> 新建一个叫yourname的session
screen -ls -> 列出当前所有的session
screen -r yourname -> 回到yourname这个session
screen -d yourname -> 远程detach某个session
screen -d -r yourname -> 结束当前session并回到yourname这个session

在每个screen session 下,所有命令都以 ctrl+a(Ctrl + a) 开始。

Ctrl + a ? -> 显示所有键绑定信息
Ctrl + a c -> 创建一个新的运行shell的窗口并切换到该窗口
Ctrl + a n -> Next,切换到下一个 window
Ctrl + a p -> Previous,切换到前一个 window
Ctrl + a 0..9 -> 切换到第 0..9 个 window
Ctrl+a [Space] -> 由视窗0循序切换到视窗9
Ctrl + a Ctrl + a -> 在两个最近使用的 window 间切换
Ctrl + a x -> 锁住当前的 window,需用用户密码解锁
Ctrl + a d -> detach,暂时离开当前session,将目前的 screen session (可能含有多个 windows) 丢到后台执行,并会回到还没进 screen 时的状态,此时在 screen session 里,每个 window 内运行的 process (无论是前台/后台)都在继续执行,即使 logout 也不影响。
Ctrl + a z -> 把当前session放到后台执行,用 shell 的 fg 命令则可回去。
Ctrl + a w -> 显示所有窗口列表
Ctrl + a t -> time,显示当前时间,和系统的 load
Ctrl + a k -> kill window,强行关闭当前的 window
Ctrl + a -> 进入 copy mode,在 copy mode 下可以回滚、搜索、复制就像用使用 [vi 一样
C-b Backward,PageUp
C-f Forward,PageDown
H(大写) High,将光标移至左上角
L Low,将光标移至左下角
0 移到行首
$ 行末
w forward one word,以字为单位往前移
b backward one word,以字为单位往后移
Space 第一次按为标记区起点,第二次按为终点
Esc 结束 copy mode
Ctrl + a ] -> paste,把刚刚在 copy mode 选定的内容贴上

操作示例见:https://wangchujiang.com/linux-command/c/screen.html

3、daemonize工具

安装

git clone git://github.com/bmc/daemonize.git
sh configure && make && sudo make install

-a #挂载到输出文件,而不是冲掉默认值。只有应用了-e and/or -o 被指定的情况。
-e #重定向输出标准错误到指定的文件中,替代/dev/null
-o #重定向输出标准到指定的文件中,替代/dev/null
-E name=value #增加环境变量给给后台程序。这个这个参数类型一定要是name=value格式。参数可以设置多次。
-c directory #定制运行命令前的目录。
-p pidfile #定制自己的pid存放位置。
-l lockfile #单实例启动时将会检查这个文件。
-u user #定制程序以谁的身份运行的。

Install httpd

ref:https://cwiki.apache.org/confluence/display/HTTPD/PHP-FPM

ref:https://dev.to/xsavitar/issue-starting-up-apache-after-upgrading-to-php-8-on-macos-2274

ref:https://blog.csdn.net/qq_44009311/article/details/105496897

ref:https://blog.csdn.net/weixin_33736649/article/details/88198840

system: centos 8

php: php 8.0.22

配置httpd

sudo vi /etc/httpd/conf/httpd.ini

添加

LoadModule proxy_module modules/mod_proxy.so

LoadModule proxy_fcgi_module modules/mod_proxy_fcgi.so

开机启动

systemctl enable httpd

启动httpd

systemctl start httpd

查看日志

/var/log/httpd/error_log

/var/log/httpd/access_log

转发到php上,php版本市8.0.22,使用php-fpm,所以httpd.conf中不需要配置AddType php之类的,可以注释掉。

关注httpd.conf底部IncludeOptional conf.d/*.conf,在httpd的conf.d(/etc/httpd/conf.d/)新建

vi /etc/httpd/conf.d/httpd-vhosts.conf

<VirtualHost *:80>
DocumentRoot "/var/www/html"
ServerName vrntf.com
ProxyRequests Off
ProxyPassMatch ^/(.*\.php)$ fcgi://127.0.0.1:9000/var/www/html/$1
<Directory "/var/www/html">
    Options none
    AllowOverride none
    Require all granted
</Directory>

ErrorLog "/var/log/httpd/wp-error.log"
CustomLog "/var/log/httpd/wp-access.log" combined
</VirtualHost>

注意本实例中DocumentRoot是配置为和httpd的一致,根据需要进行调整,在安装php时设置的user,要保证php有权限访问得到。

fcgi后面的路径也必须能访问得到。

centos 安装composer

from:https://blog.csdn.net/zsy16111/article/details/124427715

下载composer.phar文件

1curl -sS https://getcomposer.org/installer | php

将composer.phar移动到环境变量中并且更名为composer

1mv composer.phar  /usr/local/bin/composer

使用国内镜像

1composer config -g repo.packagist composer https://packagist.phpcomposer.com
1composer -v

centos7 安装php环境

From:https://blog.csdn.net/qq_59536202/article/details/125053130

安装apache服务

yum install httpd

开启apache服务

systemctl start httpd

设为开机自启动

systemctl enable httpd

接下来安装php

yum install -y epel-release

rpm -ivh http://rpms.famillecollet.com/enterprise/remi-release-7.rpm

yum –enablerepo=remi install -y php74-php

yum –enablerepo=remi install -y php74-php php74-php-gd php74-php-xml php74-php-sockets php74-php-session php74-php-snmp php74-php-mysql

yum install -y php74-php-fpm

运行并查看版本

php74 -v

添加开机自启动

systemctl enable php74-php-fpm

链接php文件

ln -s /opt/remi/php74/root/usr/bin/php /usr/bin/php

配置文件路径

vi /etc/opt/remi/php74/php.ini

memory_limit = 512M

安装wget

yum install wget

wget http://dev.mysql.com/get/mysql57-community-release-el7-9.noarch.rpm

rpm -ivh mysql57-community-release-el7-9.noarch.rpm

安装MySQL

yum install -y –nogpgcheck mysql-community-server

启动MySQL

systemctl start mysqld

查找默认密码

grep ‘temporary password’ /var/log/mysqld.log

冒号后面的就是密码

拿到登录密码登录mysql

修改密码 刷新权限

开启mysql远程访问并允许连接

use mysql;

更改host并刷新权限

在关闭防火墙的状态下,现在使用navicat工具就可以连接上centos的mysql了

如果有防火墙,开放3306端口

firewall-cmd –zone=public –add-port=3306/tcp –permanent

更新防火墙规则

firewall-cmd –reload

安装完毕

Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private

composer提示

Cloning failed using an ssh key for authentication, enter your GitHub credentials to access private

https://github.com/settings/tokens/new?scopes=repo&description=Composer+on+服务器名称+2018-07-08+0803这个地址重新生成一下token,点击regenerate,复制生成的token

  然后放到auth.json文件里(文件须有写入的权限)

    "github-oauth": {
        "github.com": "这里填token"},

  保存就可以了。

  也可以用第二种方法:composer config –global –auth github-oauth.github.com token系列号

You can also add it manually later by using "composer config --global --auth github-oauth.github.com <token>"

  看看auth.json文件是不是变了

  再看看composer安装是不是已经可以了

From:https://www.cnblogs.com/huanhang/p/14781986.html