使用php在终端中执行命令

时间:2019-04-03 23:39:33

标签: php

您好,我正在尝试创建一个在终端执行命令的php。我不知道为什么,但是我的代码不起作用。

当我去.... / api.php?link = hello时 它不会创建具有该名称的文件夹

<?php
$parameter = $_GET['link'];
$output = shell_exec('sudo mkdir $parameter');
echo "<pre>$output</pre>";
?>

修复了我的命令未运行的问题,因为我必须放置“ sudo mkdir $ parameter”而不是“ sudo mkdir $ parameter”,因为我的$ parameter具有混淆命令的符号。感谢大家帮助我解决这个问题!

2 个答案:

答案 0 :(得分:0)

根据shell_execute(https://www.php.net/manual/en/function.shell-exec.php)的文档,您需要取消安全模式。

在linux服务器上

  1. 运行以下命令:

    `vi /etc/php.ini`
    
  2. 转到safe_mode = on行,然后按“ i”键。

  3. 将行更改为safe_mode = off并按“ Esc”键。

  4. 输入:wq!保存文件。

在Windows服务器上

  1. 在记事本中打开c:\ windowsphp.ini。

  2. 将safe_mode = on行更改为safe_mode = off。

  3. 保存并关闭php.ini。

答案 1 :(得分:0)

通常来说,出现问题是由于获得许可,所以这里是解决方法:

假设您的包含exec命令的文件php存在于命名为src的文件夹中

df = df.groupBy(["name","date"]).pivot(pivot_col="time",values="value").agg(first("value")).show

src文件夹应具有所有者www-data:www-data,而不是使php能够执行命令的其他东西。

src/api.php

添加 2>&1 以查看内部发生的错误。

  

修改权限时,您可以执行命令,但要小心   yu创建的文件或文件夹应该在src内   文件夹,如果在另一个位置,则父文件夹应具有   所有者 www-data:www-data