所以我编写了一个包含2个参数的bash脚本。
我想要一个php脚本能够运行这个,所以我写了这样的东西:
<?php
$output = shell_exec("./uploadFile.sh 'confirmation.txt' 'test_conf_script'");
echo $output;
?>
这显然是硬编码的,但使用命令工作正常:
php -f test.php
。
现在我希望我的Web应用程序能够使用相同的bash脚本将文件上传到对象存储库,因此我修改了我的php脚本:
<?php
$target_dir = "./upload/";
$name = (string)$_POST['name'];
$file_name = (string)basename($_FILES["file"]["name"]);
$target_file = $target_dir . basename($_FILES["file"]["name"]);
$file_type = $_FILES["file"]["type"];
$file_size = $_FILES["file"]["size"];
if(move_uploaded_file($_FILES["file"]["tmp_name"], $target_file)){
echo "Upload\n";
}
else{
echo "couldn't upload!";
}
$output = shell_exec("./uploadFile.sh '$file_name' '$name'");
echo "./uploadFile.sh '$file_name' '$name'";
?>
我的前端为脚本提供了文件,我确实在本地看到了我的文件。
然而,使用shell_exec上传到对象存储不起作用..
它似乎很棒,因为它与test.php文件完全相同,虽然它可以在终端上运行,但是当我的前端触发这个php脚本时它无法正常工作。
答案 0 :(得分:0)
你有没有试过this:
在调用脚本之前,您可能需要chdir到正确的目录。这样,您可以在调用shell命令
之前确保脚本所在的目录
$old_path = getcwd();
chdir('/my/path/');
$output = shell_exec('./script.sh var1 var2');
chdir($old_path);