gpt4 book ai didi

php - 使用 php exec() 执行 linux 命令并运行 shell 脚本

转载 作者:太空宇宙 更新时间:2023-11-04 11:35:22 24 4
gpt4 key购买 nike

我正在尝试在我的服务器上运行这段 php 代码:

<?php
$cmd = 'echo "this is a test" > /home/ubuntu/scripts/test_file';
echo exec($cmd);
?>

根据我的理解,它应该将这段文本添加到文件 test_file 中。该文件存在于适当的位置,我已经在 php 文件上尝试了 chmod 755 和 chmod 777。但我没有看到文本被添加到 text_file 中。我尝试直接在服务器上运行 linux 命令并且它有效。有人可以告诉我我做错了什么吗?

此外,我正在尝试通过 php 脚本在服务器上创建一个虚拟主机文件。与其通过 php exec() 运行命令,我认为运行 shell 脚本会更好,shell 脚本从文本文件中读取所需的参数并在虚拟环境中设置目录路径主机文件。我是 linux 的新手,这是一个好方法还是有更好的方法来解决这个问题?所有这些都是为了以编程方式设置基于 magento 的站点。谢谢。

最佳答案

您的代码没问题。问题可能在于您的 php 在 safe mode 中(虽然它已被弃用,请参阅链接)或具有文件/目录权限。

无需授予文件权限 0777,因为这会使文件可执行,0666 就足够了。然而,文件具有正确的权限是不够的,路径上的每个目录都必须是可遍历的。尝试运行 php 代码的用户有权访问的不同目录,/tmp 是一个好的开始。

调试此类问题的一般方法是执行不同的命令,该命令可为您提供有关执行 echo 的上下文的额外信息,例如

<?php
echo exec("id");
echo "<br/>";
echo exec("ls -l /home/ubuntu/scripts/test_file");
?>

(记住 exec() 只返回命令输出的最后一行,尽管这些只显示一行)。这些命令将告诉您运行代码的用户以及他们是否可以看到该文件。

关于php - 使用 php exec() 执行 linux 命令并运行 shell 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8354267/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com