Я использую phpword
, генератор документов ms-слова. Он создает временный файл , после чего он переименовывает его в правильный формат .docx
.Разрешение на использование php rename() запрещено с помощью строки exec cmd
Пользователь projop
владеет скриптом php и запускает его как projop
.
Не участвует httpd
, потому что это вызов приложения TCL
с использованием функции exec.
Я создал временную папку php в /home/projop/tmp
и дал 0777
plus удостоверился, что она принадлежит projop:projop
.
Должно ли это принадлежать группе root
или, возможно, apache
? Я нахожусь на CentOS 6.5. не уверен, но я все время отказываюсь от разрешения.
РНР скрипт Template.php
, который переименовывает также принадлежит projop
Внимание: переименовать (/ дом/projop/TMP/yRRXn0, Mission Объявление Sheet - BB & T76.docx): Разрешение отказано в/вар /www/html/doc-generate/wwwroot/phpword/src/PhpWord/Template.php на линии 340 Предупреждение: переименовывать
Я не знаю, что это неправильно. Пользователь, которому принадлежит сценарий, находится projop
, папка tmp находится в домашнем каталоге пользователя и принадлежит projop
.
Im не уверен, что происходит.
разрешение /папка TMP:
[[email protected] 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:
[[email protected] 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
yes, Это сохранит переименованный файл в текущий рабочий каталог PHP. Хороший момент, который я пропустил, +1 – Martin
@mplf спасибо, я пробовал, и он работает хорошо. Я не уверен, почему php не указал на ошибку, что-то вроде «должен указывать папку назначения» или что-то в этом направлении - я потратил часы, пытаясь понять, что не так. Нет, где в Интернете или на веб-сайте php.net не упоминается причина ошибки, вызванная не указанием пути - это должно быть нечто встроенное или иметь правильное сообщение об ошибке. – unixmiah