当前位置:首页 » 编程语言 » shellphp

shellphp

发布时间: 2023-04-13 14:33:45

1. phplinux shell的关系

linux shell是跟系统打交道的最基本的界面。
shell 里面可以执行 php。php 程序也可以执行外部命令。

一般来说,系统可以没有 php,然不能没有 shell。

shell 可以单独做脚本程序。
php 也可以用来做脚本程序。

php 主要用来做 web 服务。
shell 主要用来跟 os 打交道。

2. php调用shell的方法技巧

php调用shell的方法技巧

一、配置

查看php.ini中配置是否打开安全模式,主要是以下三个地方

safe_mode = (这个如果为off下面两个就不用管了)

disable_functions =

safe_mode_exec_dir=

二、使用

由于PHP基本是用于WEB程序开发的,所以安全性成了人们考虑的一个重要方面。于是PHP的设计者们给PHP加了一个门:安全模式。如果运行在安全模式下,那么PHP脚本中将受到如下四个方面的限制:

① 执行外部命令

② 在打开文件时有些限制

③ 连接MySQL数据库

④ 基于HTTP的认证

在安全模式下,只有在特定拿春目录中的外部程序才可以被执行,对其它程序的调用将被拒绝。这个目录可以在php.ini文件中用 safe_mode_exec_dir指令,或在编旦敏明译PHP是加上--with-exec-dir选项来指定,默认是/usr/local/php /bin。

如果你调用一个应该可以输出结果的外部命令(意思是PHP脚本没有错误),得到的'却是一片空白,那么很可能你的网管已经把PHP运行在安全模式下了。

三、如何做?

在PHP中调用外部命令,可以用如下三种方法来实现:

1) 用PHP提供的专门函数

PHP提供共了3个专门的执行外部命令的函数:system(),exec(),模告passthru()。

system()

原型:string system (string command [, int return_var])

system()函数很其它语言中的差不多,它执行给定的命令,输出和返回结果。第二个参数是可选的,用来得到命令执行后的状态码。

例子:

复制代码 代码如下:system("/usr/local/bin/webalizer/webalizer");

exec()

原型:string exec (string command [, string array [, int return_var]])

exec() 函数与system()类似,也执行给定的命令,但不输出结果,而是返回结果的最后一行。虽然它只返回命令结果的最后一行,但用第二个参数array可以得到完整的结果,方法是把结果逐行追加到array的结尾处。所以如果array不是空的,在调用之前最好用unset()最它清掉。只有指定了第二个参数时,才可以用第三个参数,用来取得命令执行的状态码。

例子:

复制代码 代码如下:exec("/bin/ls -l");

exec("/bin/ls -l", $res);

#$res是一个数据,每个元素代表结果的一行

exec("/bin/ls -l", $res, $rc);

#$rc的值是命令/bin/ls -l的状态码。成功的情况下通常是0

passthru()

原型:void passthru (string command [, int return_var])

passthru() 只调用命令,不返回任何结果,但把命令的运行结果原样地直接输出到标准输出设备上。所以passthru()函数经常用来调用象pbmplus(Unix 下的一个处理图片的工具,输出二进制的原始图片的流)这样的程序。同样它也可以得到命令执行的状态码。

例子:

复制代码 代码如下:header("Content-type: image/gif");

passthru("./ppmtogif hunte.ppm");

希望本文所述对大家的PHP程序设计有所帮助。

;

3. 如何让php执行shell

php给我们提供了system(),exec(),passthru()这三个函数来调用外部的命令.
虽然这三个命令都能执行linux系统的shell命令,但是其实他们是有区别的:
system() 输出并返回最后一行shell结果。
exec() 不输出结果,返回最后一行shell结果,所有结果可以保存到一个返回的数组里面。
passthru() 只调用命令,把命令的运行结果原样地直接输出到标准输出设备上。
相同点:都可以获得命令执行的状态码

例子:system("/usr/local/bin/webalizer/webalizer");

4. 利用shell脚本自动重启php服务

首先你要设置好sudo 如果不用sudo用root用户执行也可以
写脚本很简单的
下述两行拷贝到服务器的文本文件中
#!/bin/ksh
/data/webserver/php-5.2.17/sbin/php-fpm reload

如果没有依赖库或依赖环境变量,任何用户只要有执行权限就可以执行。

sudo可以配置为不输入密码的。
1) 首先需要切换到root, su - (注意有- ,这和su是不同的,在用命令"su"的时候只是切换到root,但没有把root的环境变量传过去,还是当前用乎的环境变量,用"su -"命令将环境变量也一起带过去,就象和root登录一样)
2) 然后visudo 或者 vi /etc/sudoers, visudo 这个和vi的用法一样,由于可能会有人不太熟悉vi,所以简要说一下步骤
移动光标,到一行root ALL=(ALL) ALL的下一行,按a,进入append模式,输入
your_user_name ALL=(ALL) ALL
然后按Esc,再输入:w保存文件,再:q退出
这样就把自己加入了sudo组,可以使用sudo命令了。
3) 默认5分钟后刚才输入的sodo密码过期,下次sudo需要重新输入密码,如果觉得在sudo的时候输入密码麻烦,把刚才的输入换成如下内容即可:
your_user_name ALL=(ALL) NOPASSWD: ALL
至于安全问题,对于一般个人用户,我觉得这样也可以的。
4)如果你想设置只有某些命令可以sudo的话,your_user_name ALL= (root) NOPASSWD: /sbin/mount, (root) NOPASSWD: /bin/umount, (root) NOPASSWD: /mnt/mount, (root) NOPASSWD: /bin/rm, (root) NOPASSWD: /usr/bin/make, (root) NOPASSWD: /bin/ln, (root) NOPASSWD: /bin/sh, (root) NOPASSWD: /bin/mv, (root) NOPASSWD: /bin/chown, (root) NOPASSWD: /bin/chgrp, (root) NOPASSWD: /bin/cp, (root) NOPASSWD: /bin/chmod

使用sudo时, sudo su - 用户名 就可以了

5. 解析php中如何直接执行SHELL

本篇文章是对php中直接执行SHELL的方法进行了详细的分析介绍,需要的朋友参考下 $message=shell_exec("sudo /usr/local/webserver/nginx/sbin/nginx -t 2>&1"); echo "运行结果:".$message.""; 上面的语句可以直接在PHP中执行SHELL语句 如果有返回值 那么其中的 2>&1 是必须的 他会重定向输出strerr 转到strout 输出!否则返回结果会为空!

6. linux如何用shell运行一个php脚本

在 Linux 下执行 php 脚本时通常是使用以下命令(视php安装路径而定):

/usr/local/php/bin/phptest.php


另外,为简化输入可把此php执行程序 到系统命令目录下:

cp/usr/local/php/bin/php/usr/sbin/


验证:输入以下命令,如正确获取 php 版本,说明操作成功。

php-v

参考:

http://www.360doc.com/content/10/1124/15/4330887_72030254.shtml

7. shell.PHP怎么保存

如果您想在PHP中创建虚好渗并保存一个shell脚本,您可以使用以下步骤:
在PHP代码中创建一个字符串,其中包含shell脚本的代码。
使用PHP的文件函数,如fopen、fwrite等,在服务器上创建一个文件并将shell脚本代码写入该文件。
设置文件的权限为袜姿可执行,可以使用chmod函数实差脊现。

8. php和shell哪个效率高

普通功能,shell的效率高
因为这些经典命令清悄内部大多是C/C++实现的。早乎 但在一些偏僻或者复杂功能中,限于这些命令本身的功能,需要“曲线救国”,反复倒腾数据才能达到最终结果。 这时候,直接用php、python,速度就更快。陆正悉

9. 如何通过php页面执行shell脚本

检查一下,shell脚本的执行权限。
修改一下可执行权限测试看看:
sudo chmod a+x filename.sh

10. 域名后加shell.php是什么意思

访问服务器的时候可以在域名后面加上指引性文件,可以用于适应 单个项目工程服务 给多个终端提供服务的情况,比如:一个服务器需要向Web网页、计算机应用程序、APP应用、微信小程序......但又不想使用同一个服务和肢和端口,这种情况就可以用指引性文件替代端口,比如:域名/shell.php 作为计算机应用程序端服务的访问入口、域名/index.php 作为web网页端的服务入口......(每种指引性地址 都需要在服务器注册唤盯,否则直接使用是无法饥手识别的)
此种方式 并不一定 用于指引,还有其他用途,主要看使用者的目的。有的使用者会用此方式 切换不同的数据库、数据转接服务、业务分发......

热点内容
centos升级python27 发布:2024-11-02 02:00:57 浏览:673
ue4未找到编译器 发布:2024-11-02 01:46:08 浏览:155
python中的withopen 发布:2024-11-02 01:46:07 浏览:976
编程名人 发布:2024-11-02 01:42:18 浏览:867
服务器电脑配置表 发布:2024-11-02 01:41:29 浏览:370
linux使用串口 发布:2024-11-02 01:37:11 浏览:702
二维码扫的密码从哪里开始 发布:2024-11-02 01:24:57 浏览:473
如何将手表改成开放式安卓系统 发布:2024-11-02 01:09:00 浏览:739
6s还能用吗能和什么安卓机比 发布:2024-11-02 01:08:09 浏览:765
SQL扩位 发布:2024-11-02 00:55:35 浏览:447