所以我寫了一個bash腳本,它需要2個參數。存儲在對象存儲由於某種原因bash腳本不能在php中執行
- 本地文件名
- 文件名。
我想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不工作的對象存儲..
看來自的bizzare它完全一樣的test.php的文件,雖然從終端,當我的前端觸發此PHP腳本它不起作用。
前檢查'uploadFile.sh'的權限(所有者:組),這是有可能的地方問題是... –
uploadFile.sh的權限-rwxr-xr-x –
用'echo getcwd();'檢查當前的工作目錄。你是否在'uploadFile.sh'文件夾中? – hek2mgl