php执行shell文件无权限,php中shell_exec不能运行?

用户投稿 56 0

关于“php执行shell文件”的问题,小编就整理了【3】个相关介绍“php执行shell文件”的解答:

php中shell_exec不能运行?

其实,你这里真是的需求,只是希望在Web这边获取一种方式,来执行一个长达数小时的“异步”任务。

就PHP而言,可以用2种方式来做:

(1)在PHP里使用shell_exec的函数,以shell的方式,启动一个独立的PHP脚本执行。

这种方式,其实相当于在Web服务器处理过程中,独立起了一个shell进程处理你的任务。

这里,需要特别注意的是shell_exec的服务器安全,注意校验参数,小心避免被带入shell命令中。

这个是比较容易实现的方式。

(2)使用PHP实现一个Server,监听一个端口,为Web端提供服务。这里的实现方式有很多,通常要配合扩展,例如原生的pthread(多线程),开源扩展swoole等等。

直接在web程序里使用多线程,是不恰当的,web请求通常有时间限制,例如timeout默认是30秒。你如何保证,在线程任务执行完之前,它的父进程仍然在工作?

已安装的脚本怎么运行?

运行方法:

js属于浏览器脚本,需要在浏览器中运行,所以运行js脚本,需要在html页或php页或其他的一些页面。比如你编写了一个名为my.js的脚本文件,就需要在页面的

标签中这样写,,my.js需要和页面放在同一目录中。

已安装的脚本运行方法如下

脚本的四种运行方法

1.切换到shell脚本所在的目录(此时,称为工作目录)执行shell脚本代码

2.以绝对路径的方式去执行bash shell脚本: 

3.直接使用bash 或sh 来执行bash shell脚本:可以不必事先设定shell的执行权限

4.在当前的shell环境中执行bash shell脚本

如何将shell脚本变为可执行文件?

方法一、可以使用gzexe命令直接将shell脚本变成可执行文件,命令为gzexe 后面接要处理的shell文件名。

加密后,用file查看文件类型已经为二进制文件了,执行都可以正常执行的。

方法二、可以使用shc命令将shell脚本变为可执行文件。

1、安装shc

2、加密脚本文件CFLAGS=-static shc -r -f t.sh

CFLAGS指明为static静态编译,因为默认生成的是动态库,在不同的系统可能运行不了。-r也是为了生成的脚本二进制可执行程序能在其它的电脑上运行,-f参数用于指明要编译的脚本文件。

3、正常执行加密后的脚本文件。

4、shc常用参数说明

-e date (指定过期日期)

-m message (指定过期提示的信息)

-f script_name(指定要编译的shell的路径及文件名)

-r   Relax security. (可以在相同操作系统的不同系统中执行)

-v   Verbose compilation(编译的详细情况)

到此,以上就是小编对于“php执行shell文件”的问题就介绍到这了,希望介绍关于“php执行shell文件”的【3】点解答对大家有用。

抱歉,评论功能暂时关闭!