English 中文(简体)
如何通过 php 系统() 按命令运行
原标题:How to run at command via php system()
  • 时间:2012-05-22 19:43:52
  •  标签:
  • php
  • unix

因为一些奇怪的原因,这个

echo system ("echo回声问候 & gt; /dev/pts/2 /usr/bin/at 19: 36");

拒绝工作 从我的php脚本, 但命令工作正常 当我刚进入它 通过命令线。

我知道 php 有权限执行某些命令 。 我可以运行是 php 脚本, 但不是命令 。 我尝试过使用文件权限玩耍, 但至今还没有成功 : ()

< 强度 > 编辑 < /强 >

/usr/bin/at的许可是:

-rwxr-sr-x 1 <2011年1月15日,

我认为这是一个权限问题, 如果我从我的 Ssh 终端执行 php 文件, 它的工作很好, 但不在网络上。

最佳回答

你所执行的是

echo  hello  > /dev/pts/2 | /usr/bin/at 19:36

意思

echo  hello  > /dev/pts/2

和管道 stddout 到 /usr/bin/at 19:36 但既然您已经将回声重定向到 / dev/pts/2 , 这将是空的。 您可能想要做的是 :

echo system("echo  echo hello > /dev/pts/2  | /usr/bin/at 19:36");

您也可以使用 shell_ exec 通过 shell 或 proc_open 通过 shell 或 通过 shell 或 通过 code > proc_open 传递命令, 使您更好地控制您执行的命令的 stdin/ out/ err。 您的示例将相应于( 来自 php. net docs 的适应示例 ) :

<?php
$descriptorspec = array(
   0 => array("pipe", "r"),  // stdin is a pipe that the child will read from
   1 => array("pipe", "w"),  // stdout is a pipe that the child will write to
   2 => array("pipe", "w")  // stderr is a pipe that the child will write to
);

$process = proc_open( /usr/bin/at , $descriptorspec, $pipes);

if (is_resource($process)) {
    fwrite($pipes[0],  echo "hello" > /dev/pts/2 );
    fclose($pipes[0]);

    $stdout = stream_get_contents($pipes[1]);
    fclose($pipes[1]);

    $stderr = stream_get_contents($pipes[2]);
    fclose($pipes[2]);

    $return_value = proc_close($process);
    echo "command returned $return_value. stdout: $stdout, stderr: $stderr
";
} else {
    echo "Process failed";
}
?>
问题回答

在您的php.ini 文件检查中,对禁用的功能进行检查,有时功能如系统等功能会因安全原因被禁用。





相关问题
Brute-force/DoS prevention in PHP [closed]

I am trying to write a script to prevent brute-force login attempts in a website I m building. The logic goes something like this: User sends login information. Check if username and password is ...

please can anyone check this while loop and if condition

<?php $con=mysql_connect("localhost","mts","mts"); if(!con) { die( unable to connect . mysql_error()); } mysql_select_db("mts",$con); /* date_default_timezone_set ("Asia/Calcutta"); $date = ...

定值美元

如何确认来自正确来源的数字。

Generating a drop down list of timezones with PHP

Most sites need some way to show the dates on the site in the users preferred timezone. Below are two lists that I found and then one method using the built in PHP DateTime class in PHP 5. I need ...

Text as watermarking in PHP

I want to create text as a watermark for an image. the water mark should have the following properties front: Impact color: white opacity: 31% Font style: regular, bold Bevel and Emboss size: 30 ...

How does php cast boolean variables?

How does php cast boolean variables? I was trying to save a boolean value to an array: $result["Users"]["is_login"] = true; but when I use debug the is_login value is blank. and when I do ...