按 PHP 生成文件

Generate a file by PHP

我想通过batch.php生成一个文件,链接到this page中的按钮:

<?php
  echo "Hello world!";
  'cat 123 > uploads/cat.txt';
  echo "Bye world!";
?> 

单击按钮确实会启动 batch.php,但是,cat.txt 不会在服务器端生成。

有谁知道如何解决这个问题?也许我需要为文件夹设置一些权限?

编辑 1:

ps aux|grep -E 'apache|www-data|http|php' returns:

root     12269  0.0  2.1 278256 10796 ?        Ss   Aug02   3:38 php-fpm: master process (/etc/php5/fpm/php-fpm.conf)                    
www-data 12301  0.0  0.8  97728  4044 ?        S    Aug02   3:27 nginx: worker process
www-data 12302  0.0  0.8  98104  4296 ?        S    Aug02   3:54 nginx: worker process
www-data 12303  0.0  0.9  97940  4520 ?        S    Aug02   3:46 nginx: worker process
www-data 12304  0.0  0.9  98132  4544 ?        S    Aug02   3:47 nginx: worker process
timur    14888  0.0  0.1  11712   932 pts/0    S+   15:04   0:00 grep --color=auto -E apache|www-data|http|php
www-data 18748  0.0  8.7 298196 43668 ?        S    Sep07   0:12 php-fpm: pool www                                                       
www-data 18749  0.0  6.4 286660 32432 ?        S    Sep07   0:11 php-fpm: pool www                                                       
www-data 21100  0.0  8.3 296204 42048 ?        S    Sep05   1:02 php-fpm: pool www    

ls -l returns:

total 20
-rw-r--r-- 1 root     root       84 Sep 12 08:33 batch.php
-rw-r--r-- 1 timur    timur    5120 Sep 12 09:00 generateFile.exe
-rw-rw-r-- 1 timur    timur     138 Sep 12 08:28 index.html
drwxrwxrwx 2 timur    timur    4096 Sep 12 15:03 uploads

我将 777 授予 uploads,并且我尝试了所有可能的所有者名称和所有者组(即 timur:timurwww-data:www-dataroot:root ), 但其中 none 有效...

关键是写exec('cat 123 > uploads/cat.txt')shell_exec('cat 123 > uploads/cat.txt')而不是'cat 123 > uploads/cat.txt'

那么,虽然 drwxrwxrwx 2 timur timur 4096 Sep 12 15:03 uploads 有效,但将 755www-data:www-data(保留给 PhP)分配给 uploads 更正确。