Php 系统(“cp/1.txt/2.txt”,$out);只是没有';不行?
我试图使用php系统(exec)函数在linux上运行一些命令,但它就是不起作用 我已使用root用户登录系统。我创建了“/1.txt”文件,然后通过apache服务器运行这个php脚本:Php 系统(“cp/1.txt/2.txt”,$out);只是没有';不行?,php,linux,apache,ubuntu,Php,Linux,Apache,Ubuntu,我试图使用php系统(exec)函数在linux上运行一些命令,但它就是不起作用 我已使用root用户登录系统。我创建了“/1.txt”文件,然后通过apache服务器运行这个php脚本:system(“sudo cp/1.txt/2.txt”,$out)但它不会复制文件 你能解释一下为什么它不起作用吗?(我是linux操作系统新手,请解释)删除sudo,并在/1.txt和/2.txt上授予apache用户权限,它应该可以工作 如果/2.txt不存在,则创建一个目录,将1.txt放在该目录中,并
system(“sudo cp/1.txt/2.txt”,$out)代码>但它不会复制文件
你能解释一下为什么它不起作用吗?(我是linux操作系统新手,请解释)删除sudo
,并在/1.txt和/2.txt上授予apache用户权限,它应该可以工作
如果/2.txt不存在,则创建一个目录,将1.txt放在该目录中,并向apache用户授予该目录和文件的权限。/1.txt和/2.txt位于文件系统的最高层-这就是您的目标吗?不管怎样,这都不是个好主意
我建议您在文件所在的区域设置文件,例如/var/webapp files/,这样您可以执行以下操作:
define('WEBAPP_FILES_LOCATION', '/var/webapp-files');
system("cp ".WEBAPP_FILES_LOCATION."/1.txt ".WEBAPP_FILES_LOCATION."/2.txt", $out);
注意:我已经为位置定义了一个常量,因为在许多不同的地方都需要它,如果你想随时更改它,你不想重复自己
这将要做的是运行系统命令:
cp /var/webapp-files/1.txt /var/webapp-files/2.txt
如果您的/var/webapp files目录对您的apache用户具有写访问权限,则该操作应成功
但是…PHP确实有一个内置的复制函数,我建议使用它,而不是使用更通用、更危险的系统()。您可以在此处阅读有关copy()的内容,因为cp需要完整的路径,所以您可以重构我前面的示例以:
define('WEBAPP_FILES_LOCATION', '/var/webapp-files');
$copySucceeded = copy(WEBAPP_FILES_LOCATION."/1.txt", WEBAPP_FILES_LOCATION."/2.txt");
echo "The copy attempt ". ($copySucceeded ? "succeeded" : "failed");
希望这能有所帮助。您可能没有给sudo
密码?我应该如何给sudo密码?