2012-06-15 43 views
0

除了我previous question,另一个问题出现了,我决定做一个新的问题吧:PHP +运行bash脚本来创建文件

我目前正在调用PHP脚本,比运行bash脚本。 PHP脚本的样子:

chdir('/home/'); 
$output = shell_exec('./do.sh'); 
echo "<pre>$output</pre>"; 

的do.sh包含:

#! /bin/bash 

echo 12; 
dd if=/dev/urandom of=test.test bs=1048576 count=2 

是以下问题:

当我打电话./do.sh从终端一切正常:test.test是创建和输出是12

但是,当我从我的PHP文件调用它时,输出为12,但也是文件正在创建中。由于我对bash脚本几乎一无所知,我不知道为什么会发生这种情况......

+5

这可能是因为PHP运行的用户对'/ home /'目录没有写入权限。您必须'chmod nnn/home',其中'nnn'是适当的权限结构 - 请记住尽可能限制它。您可能需要查看所有权和组成员身份以获得最佳设置。要测试你可以'chmod 777/home',并且如果它有效,那么你有你的答案。 – DaveRandom

+0

非常感谢!我没有忘记为主文件夹设置正确的权限。我只想到实际的php文件,并改变了它的权限,但没有做同样的文件夹!我希望你不要在意我标记@ dAm2K的答案,因为他还建议看看权限! – Andrej

+0

不用担心... ;-) – DaveRandom

回答

2

检查是否启用了PHP safe_mode。你必须在你的/etc/php.ini文件中关闭它,显然要检查文件系统的权限。

+0

安全模式关闭,php和.sh文件都有权写入。但是,我不确定用户(请参阅@DaveRandom的评论)。 – Andrej

+0

尝试使用dd:/ bin/dd的绝对路径if =/dev/urandom of = test.test bs = 1048576 count = 2 – dAm2K

+1

毕竟它是权限!非常感谢!我没有忘记为主文件夹设置正确的权限。我只想到实际的php文件,并改变了它的权限,但没有做同样的文件夹! – Andrej