我试图执行多个命令在PHP中使用exec()和shell_exec,但我得到一个空值回来,我不应该和没有发生(如果我复制并粘贴在命令行下面的字符串,它会做工精细,并完成所需的工作),这是我使用的命令:php命令行exec()多个执行和目录?
$command = "cd /../Desktop/FolderName;";
$command .= 'export PATH=$PATH:`pwd`;';
$command .= 'Here i execute a compiler;';
,然后我使用escapeshellcmd()将
$escaped_command = escapeshellcmd($command);
然后
shell_exec($escaped_command);
任何想法我做错了,我也试过escapeshellarg()而不是escapeshellcmd()?
解决方案:问题是执行编译器对其他所有者的许可是非,这是问题所在。 ,因为当您在php中使用exec()
函数时,文件的所有者将是www-data,因此您需要为ubuntu或任何基于Linux的操作系统的ACL授予www-data权限(您可以通过做这个exec('whoami')
),或者你需要执行的文件。
你真的是指'/../桌面/文件夹名称?因为这与'/ Desktop/FolderName'相同,这可能不是你想要的。 – larsks
这是相同的/桌面/文件夹名称,这是我想要的但这并不影响任何东西,因为它仍然将目录更改为我需要的文件夹 –
我总是会使用完整的,而不是相对的路径,这样的事情。 – 2012-05-21 00:01:40