0

我想在 .bashrc 中执行一个 bash shell 脚本php。用于创建目录的 shell 脚本。但是当我.php在服务器中运行文件时它没有创建。

上面我用过的php代码------

<html>
<?php
echo exec('./home/biswajit/lh.sh')
?>
thanx
</html>

对应lh.sh文件的代码是-----

#!/bin/bash

cat <<EOF | /home/biswajit/matlab  -nodesktop -nosplash -nodisplay /> /home/biswajit/matlab_result.out
mkdir('/home/biswajit/Done');
disp('directory created');
exit
EOF
4

2 回答 2

0

检查运行它的用户权限。您可以回显“whoami”(bash)命令的输出,以了解使用 wich 用户运行脚本。

例如,如果它使用“www-data”用户(ubuntu 的 [也许其他人] 默认 httpd 用户)执行,那么它可能无权在用户的主文件夹中创建目录。

于 2013-08-07T11:48:24.497 回答
0

我最近发布了一个项目,它允许 PHP 获取并与真正的 Bash shell 交互(如果需要,作为 root 用户),它解决了 exec() 和 shell_exec() 的限制。在这里获取:https ://github.com/merlinthemagic/MTS

下载后,您只需使用以下代码:

$shell    = \MTS\Factories::getDevices()->getLocalHost()->getShell('bash', true);
$return1  = $shell->exeCmd('cat <<EOF | /home/biswajit/matlab  -nodesktop -nosplash -nodisplay /> /home/biswajit/matlab_result.out');
$return2  = $shell->exeCmd('mkdir -p \'/home/biswajit/Done\'');

//the return will be a string containing the return of the command
echo $return1;
echo $return2;
于 2016-05-20T10:25:34.083 回答