按 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:timur
、www-data:www-data
和 root: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
有效,但将 755
和 www-data:www-data
(保留给 PhP)分配给 uploads
更正确。
我想通过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:timur
、www-data:www-data
和 root: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
有效,但将 755
和 www-data:www-data
(保留给 PhP)分配给 uploads
更正确。