您好,我正在尝试创建一个在终端执行命令的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具有混淆命令的符号。感谢大家帮助我解决这个问题!
答案 0 :(得分:0)
根据shell_execute(https://www.php.net/manual/en/function.shell-exec.php)的文档,您需要取消安全模式。
在linux服务器上
运行以下命令:
`vi /etc/php.ini`
转到safe_mode = on行,然后按“ i”键。
将行更改为safe_mode = off并按“ Esc”键。
输入:wq!保存文件。
在Windows服务器上
在记事本中打开c:\ windowsphp.ini。
将safe_mode = on行更改为safe_mode = off。
保存并关闭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