Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在网页中执行时,文件写入在PHP/MAFFT中不起作用_Php_Bash_Shell_Bioinformatics - Fatal编程技术网

在网页中执行时,文件写入在PHP/MAFFT中不起作用

在网页中执行时,文件写入在PHP/MAFFT中不起作用,php,bash,shell,bioinformatics,Php,Bash,Shell,Bioinformatics,我正在从事一个基于web的项目,该项目在名为MAFFT的服务器上执行一个程序。MAFFT将输入文件和写入输出的文件作为参数 mafft in > out 我有一个php页面,它调用: <?php shell_exec("mafft in > out); ?> 然后: 它的工作原理与预期完全相同,但当我在web浏览器中导航到该页面时,它会创建输出文件,但不会写入该文件(即使我将输出文件perm更改为777) 输入/输出文件可能非常

我正在从事一个基于web的项目,该项目在名为MAFFT的服务器上执行一个程序。MAFFT将输入文件和写入输出的文件作为参数

    mafft in > out
我有一个php页面,它调用:

    <?php
        shell_exec("mafft in > out);
    ?>
然后:

它的工作原理与预期完全相同,但当我在web浏览器中导航到该页面时,它会创建输出文件,但不会写入该文件(即使我将输出文件perm更改为777)

输入/输出文件可能非常大,因为这是序列对齐的东西,但我正在使用少于200个字符的文件进行测试

这里有没有我遗漏的东西,或者仅仅是在网页上做不到

谢谢,
Ryan

问题是程序(MAFFT)在运行时输出其进度,但通过网页执行该程序并没有授予执行该程序所需的权限,因此该程序未完成即退出。将程序输出发送到shell脚本中的/dev/null似乎解决了这个问题。

您应该将完整路径发布到
sh
:即
shell_exec(“/bin/sh./scr.sh”)。这些问题大多是由于权限问题或环境变量
PATH
设置不正确造成的。@FlorinStingaciu我添加了您的建议,它仍然会创建输出文件,但不会写入该文件。请尝试使用
2>&1>
将stderr管道传输到输出中。也许你会得到一个错误的提示。另外,查看通常位于
/var/logs/httpd/
下的
httpd
错误日志可能会有所帮助。当查看httpd错误日志时,我发现/usr/bin/mafft:1961:/usr/bin/mafft:cannot create/dev/stderr:Permission denied
    #!/bin/bash
    mafft in > out
    <?php
        shell_exec("sh ./scr.sh");
    ?>
    php something.php