PHP - MKDIR с неправильным владельцем

У меня есть простой скрипт PHP, который создает папку, а затем копирует в нее определенные файлы. Папка (и скопированные файлы) имеют все 755 разрешений. Проблема в том, что он устанавливает пользователя как Apache. Теперь я не могу удалить или изменить разрешения через FTP. Я могу только "сбросить владение" в моем DirectAdmin. Там я вижу изменения пользователя с "Apache" на "matthdc58".

Как я могу позволить PHP создать папку с "matthdc58" в качестве пользователя? Я старался chown() - не удалось:

Warning: chown() [function.chown]: Operation not permitted in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 78

Warning: chown() [function.chown]: Operation not permitted in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 79

Warning: chown() [function.chown]: Operation not permitted in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 80

Warning: Cannot modify header information - headers already sent by (output started at /home/matthdc58/domains/hiddendomain.com/public_html/Home.php:78) in /home/matthdc58/domains/hiddendomain.com/public_html/Home.php on line 90

Я также пытался (казалось, чтобы решить проблемы других) php_flag safe_mode off в моем.htaccess, чтобы не преобладать.


Весь мой PHP-скрипт:

$dirtocreate = 'userdata/'.$_SESSION['uname'];
$oldumask = umask(0); 
mkdir($dirtocreate, 0755);
umask($oldumask);

copy('img/100x100.png', $dirtocreate.'/100x100.png');   
copy('img/64x64.png', $dirtocreate.'/64x64.png');   

//Verify correct owner
chown($dirtocreate, 'matthdc58');
chown($dirtocreate.'/100x100.png', 'matthdc58');
chown($dirtocreate.'/64x64.png', 'matthdc58');

//Verify correct permissions, just to be sure               
chmod($dirtocreate,0755);
chmod($dirtocreate.'/100x100.png',0755);        
chmod($dirtocreate.'/64x64.png',0755);

Итак, просто уточнить:

  • Мой PHP-скрипт устанавливает для владельца новой папки значение "Apache".
  • Сценарий PHP не может изменить владельца на "matthdc58".
  • Теперь я не могу редактировать папку через FTP, так как владельцем является "Apache".
  • Я могу восстановить владение только через DirectAdmin с помощью кнопки "Восстановить владение".

2 ответа

Пожалуйста, проверьте, что вы выполнили chmodded и загрузили свой каталог: /home/matthdc58/domains/hiddendomain.com/public_html/ под своим именем пользователя.:)

Оказалось, что это связано с версией PHP, которую я использовал.
По рекомендации моего хоста, Versio, я изменил версию PHP, добавив

<FilesMatch "\.php$">
AddHandler x-httpd-php54 .php
</FilesMatch>

в мой файл.htaccess.


Я не думаю, что это актуально для других, так как это связано с правами, но вы всегда можете попробовать.
Ещераз спасибо @LeSamAdmin за помощь!

Другие вопросы по тегам