php 使用 exec 命令行拒绝重命名()权限
php rename() permission denied using exec cmd line
我使用 phpword
,一个 ms-word 文档生成器。它创建一个临时文件
然后将其重命名为正确的 .docx
格式。
用户 projop
拥有 php 脚本并且它 运行 作为 projop
。
不涉及任何 httpd
,因为它是来自 TCL
应用程序使用 exec 函数的调用。
我在 /home/projop/tmp
中创建了 php 的临时文件夹并给定 0777
并确保它归 projop:projop
所有。
这应该属于 root
组还是 apache
组?我在 CentOS 6.5。不确定,但我一直被拒绝许可。
重命名的php脚本Template.php
也属于projop
Warning: rename(/home/projop/tmp/yRRXn0,Mission Announcement Sheet - BB&T76.docx): Permission denied in /var/www/html/doc-generate/wwwroot/phpword/src/PhpWord/Template.php on line 340 Warning: rename
我不知道怎么了。拥有该脚本的用户是 projop
,tmp 文件夹位于用户的主目录中,归 projop
所有。
我不确定发生了什么。
/tmp 文件夹权限:
[root@project-open-v40 projop]# ls -la
total 493808
drwxr-xr-x. 7 projop root 4096 Aug 6 09:40 .
drwxr-xr-x. 3 root root 4096 Jul 9 09:37 ..
drwxrwxr-x. 4 projop projop 4096 Oct 16 2012 acs-bootstrap-installer-master
-rwxr-xr-x. 1 projop projop 27527 Jul 15 10:32 gain_fns.php
-rw-r-----. 1 projop projop 2487 Jul 17 11:49 logo.gif
-rw-rw-r--. 1 projop projop 52535 Jul 23 09:57 master
-rwxr-xr-x. 1 projop projop 3039 Jul 28 14:37 notifyPM.php
-rw-r--r--. 1 projop projop 59719 Aug 5 09:35 resetInvoice.php
drwxr-xr-x. 3 apache apache 4096 Mar 12 15:34 templates
-rw-r--r--. 1 apache projop 7966720 Jul 9 09:37 templates.tar
drwxrwxrwx. 2 projop projop 4096 Aug 6 09:54 tmp
drwxr-xr-x. 6 apache apache 4096 Mar 2 02:43 vendor
-rw-r--r--. 1 apache projop 211886080 Jul 9 09:38 vendor.tar
drwxr-xr-x. 18 apache apache 4096 Jul 7 10:40 wwwroot
-rw-r--r--. 1 apache projop 285624320 Jul 9 09:38 wwwroot.tar
/tmp文件夹内容:
[root@project-open-v40 tmp]# ls -la
total 152
drwxrwxrwx. 2 projop projop 4096 Aug 6 09:54 .
drwxr-xr-x. 7 projop root 4096 Aug 6 09:40 ..
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:53 G0pC83
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:42 lLm9Iz
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:46 NR8CSg
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:54 yRRXn0
在尝试重命名文件之前使用 chmod
更改文件的权限 - 将权限更改为文件夹的 0777。
http://php.net/manual/en/function.chmod.php
也用http://php.net/manual/en/function.fileperms.php到return文件的当前值,看看有没有异常?
如果失败,另一种方法是使用 PHP 脚本加载文件内容,然后以新名称保存内容,并删除原来的内容。这是重命名实际上所做的漫长过程。这不太理想,但也是一种选择。
编辑:
可能不允许您重命名 /tmp/
文件夹的内容,因为它是专用的指定临时文件夹,因此不要在那里重命名,请尝试打开文件然后重命名的上述过程并将其保存到另一个更永久的目的地。
查看重命名命令警告:
Warning: rename(/home/projop/tmp/yRRXn0,Mission Announcement Sheet - BB&T76.docx): Permission denied in /var/www/html/doc-generate/wwwroot/phpword/src/PhpWord/Template.php on line 340 Warning: rename
您正试图在不指定路径的情况下重命名文件。然后,这将尝试重命名为与预期 /home/projop/tmp/
不同的位置
尝试在第二个参数的路径前加上重试。
我使用 phpword
,一个 ms-word 文档生成器。它创建一个临时文件
然后将其重命名为正确的 .docx
格式。
用户 projop
拥有 php 脚本并且它 运行 作为 projop
。
不涉及任何 httpd
,因为它是来自 TCL
应用程序使用 exec 函数的调用。
我在 /home/projop/tmp
中创建了 php 的临时文件夹并给定 0777
并确保它归 projop:projop
所有。
这应该属于 root
组还是 apache
组?我在 CentOS 6.5。不确定,但我一直被拒绝许可。
重命名的php脚本Template.php
也属于projop
Warning: rename(/home/projop/tmp/yRRXn0,Mission Announcement Sheet - BB&T76.docx): Permission denied in /var/www/html/doc-generate/wwwroot/phpword/src/PhpWord/Template.php on line 340 Warning: rename
我不知道怎么了。拥有该脚本的用户是 projop
,tmp 文件夹位于用户的主目录中,归 projop
所有。
我不确定发生了什么。
/tmp 文件夹权限:
[root@project-open-v40 projop]# ls -la
total 493808
drwxr-xr-x. 7 projop root 4096 Aug 6 09:40 .
drwxr-xr-x. 3 root root 4096 Jul 9 09:37 ..
drwxrwxr-x. 4 projop projop 4096 Oct 16 2012 acs-bootstrap-installer-master
-rwxr-xr-x. 1 projop projop 27527 Jul 15 10:32 gain_fns.php
-rw-r-----. 1 projop projop 2487 Jul 17 11:49 logo.gif
-rw-rw-r--. 1 projop projop 52535 Jul 23 09:57 master
-rwxr-xr-x. 1 projop projop 3039 Jul 28 14:37 notifyPM.php
-rw-r--r--. 1 projop projop 59719 Aug 5 09:35 resetInvoice.php
drwxr-xr-x. 3 apache apache 4096 Mar 12 15:34 templates
-rw-r--r--. 1 apache projop 7966720 Jul 9 09:37 templates.tar
drwxrwxrwx. 2 projop projop 4096 Aug 6 09:54 tmp
drwxr-xr-x. 6 apache apache 4096 Mar 2 02:43 vendor
-rw-r--r--. 1 apache projop 211886080 Jul 9 09:38 vendor.tar
drwxr-xr-x. 18 apache apache 4096 Jul 7 10:40 wwwroot
-rw-r--r--. 1 apache projop 285624320 Jul 9 09:38 wwwroot.tar
/tmp文件夹内容:
[root@project-open-v40 tmp]# ls -la
total 152
drwxrwxrwx. 2 projop projop 4096 Aug 6 09:54 .
drwxr-xr-x. 7 projop root 4096 Aug 6 09:40 ..
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:53 G0pC83
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:42 lLm9Iz
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:46 NR8CSg
-rwxrwxrwx. 1 projop projop 34854 Aug 6 09:54 yRRXn0
在尝试重命名文件之前使用 chmod
更改文件的权限 - 将权限更改为文件夹的 0777。
http://php.net/manual/en/function.chmod.php
也用http://php.net/manual/en/function.fileperms.php到return文件的当前值,看看有没有异常?
如果失败,另一种方法是使用 PHP 脚本加载文件内容,然后以新名称保存内容,并删除原来的内容。这是重命名实际上所做的漫长过程。这不太理想,但也是一种选择。
编辑:
可能不允许您重命名 /tmp/
文件夹的内容,因为它是专用的指定临时文件夹,因此不要在那里重命名,请尝试打开文件然后重命名的上述过程并将其保存到另一个更永久的目的地。
查看重命名命令警告:
Warning: rename(/home/projop/tmp/yRRXn0,Mission Announcement Sheet - BB&T76.docx): Permission denied in /var/www/html/doc-generate/wwwroot/phpword/src/PhpWord/Template.php on line 340 Warning: rename
您正试图在不指定路径的情况下重命名文件。然后,这将尝试重命名为与预期 /home/projop/tmp/
尝试在第二个参数的路径前加上重试。