php执行system
1. php的system解除了限制增加了权限为什么还是无法执行
这个的话有点复杂,下面我写了几种分析你看看有没有帮助。
PHP无法执行system()函数,可能有以后几种可能。
首先请开启错误时数,根据错误才好判断原因:打开php.ini中的 display_errors = On
在ISAPI模式下修改php.ini要重起WEB服务。
错误分析:
1、Warning: system() has been disabled for security reasons
该错误是由于服务器安全配置将system函数关闭了,编辑php.ini查找 disable_functions 将等号后面的 system 去掉即可。详细你可以去后盾人看看视频教学的,里面都讲的很清楚很详细。
2. php的system函数
输出0,是表示你运行失败,而不是运行成功呀!
return 0;是什么?只是你设置 的main的返回值 ,这个返回值返回给谁?有输出 么?没有输出啊,PHP程序怎么能得到?
你的错觉就在这儿。
你把 return 0;改为任意其它 的数字,比如return 999;
再运行你的e.php看看,页面输出应该还是0的。。
这个0,是e.php文件中的system函数运行失败的返回值!而不是a.exe的
3. 如何通过PHP执行linux命令
我使用的意思是想通过php代码做的更好对任意那么的目录可读可写可卸载,可以执行kill pid等的命令。
当然还存在还存在的做法,这是我使用的猜测,您不妨试看看,
1、把php的运行网民改为root,这种可能会存在必须的风险。
2、在apache里面指定可以对某个root权限的文件或目录做操作,该做法没试验过。可能您能试验成功的话,希望反馈一下哦。
求助者:恩,第一种做法,我使用的想过,可就是我是想参考我集团的思路来,所以这种做法没尝试过。因为它存在安全疑问。
第二个做法,应该可以,可就是太局限性了。要是文件多咋办,还存在我要想执行个kill,services restart等,肯定就不行了。
大家集团貌似是,写了个linux命令,和您们的思路貌似是一样的回者答:这是大家的做法:用VC写个服务,该服务的运行身份是root,也可以给其最大权限,php调用这个服务做操作。 该做法可行,只是就得多一种底层语言。
还存在的做法经测试:
第一种做法,成功。
我使用的项目用是VC写的服务。
第一种做法,可以改变PHP的运行身份,SuexecUserGroup指定CGI程序运行时所使用的网民和组。非CGI程序的请求仍然使用User指令所指定的网民身份处理。该指令取代了Apache的VirtualHosts配置中的User和Group指令。建议您看下类似的文档,个人做调试。好像还存在别的做法哦。好像是用super。这种您得个人摸索。我只提供思路哦`` 哈哈`` 谢谢``
4. 关于php的system命令,
需要有两个步骤,
1是要把该文件设置为可执行的权限,使用命令chmod a+x test.txt就可以做到;
2是把该文件放到环境变量PATH中的任意一个目录中,一般是放在/usr/local/bin目录中。
此外,用shell写的文件一般以.sh作为后缀,另外,文件的第一行要指明所使用的解释器位置,通常是这样的
#!/bin/bash(根据你系统里 bash位置的不同可能会有一些不同)
5. php关于system()的使用问题
给你一个win下使用的函数:
function exec_wincmd($cmd)
{
$WshShell = new COM("WScript.Shell");
$cwd = getcwd();
if (strpos($cwd,' '))
{ if ($pos = strpos($cmd, ' '))
{ $cmd = substr($cmd, 0, $pos) . '" ' . substr($cmd, $pos);
}
else
{ $cmd .= '"';
}
$cwd = '"' . $cwd;
}
$oExec = $WshShell->Run("cmd /C \" ".$cmd."\"", 0,true);
return $oExec == 0 ? true : false;
} //function end