PHP使用执行shell使用scp在服务期间远程上传文件

                      
                            <

PHP使用执行shell使用scp在服务期间远程上传文件

比如我要在A服务器上将/home/XXX.txt上传到B服务器上的/home/www/xxx.txt

  1. 在A服务器上执行下面脚本

    1.cd /root/.ssh切换到这个目录

    2.输入ssh-keygen -t rsa,回车,然后输入id_rsa,然后一直回车,直到结束后,.ssh目录会生成三个文件id_rsa , id_rsa.pub ,known_hosts 

    3.输入scp /root/.ssh/id_rsa.pub root@192.168.1.31:~/.ssh/authorized_keys     意思是,将/root/.ssh/id_rsa.pub秘钥远程复制到192.168.1.31上完成认证,红色部分是B服务器root用户名,绿色部分是B服务器IP,回车之后会提示输入B服务器root密码,输入之后回车,会显示上传百分比,100%后就表示成功,之后使用scp的时候就不需要再提示输入密码认证信息

  2. 找到php包下面的php-fpm.conf文件,打开修改启动账户为root

    image.png

  3. 重启php   service php-fpm restart ,如果提示错误信息ERROR: FPM initialization failed,就执行/usr/local/php/sbin/php-fpm -R

  4. 输入下面的php代码到php文件,访问就可以实现从A服务器将文件复制到B服务器

    exec('scp /home/wwwroot/sql/onecard.sql root@192.168.1.31:/home/idcard',,$result,$ret);

    var_dump($ret);//执行成功输出0

    上面的代码,红色部分是A服务器要复制的文件,绿色部分是B服务器root用户名,蓝色部分是B服务器IP,褐色部分是要复制到B服务器的哪里

  5. 如果报错没有权限运行exec,打开php.ini搜索disable_functions,将列表里面的exec删除,重启php就可以

>