フォルダーを作成し、特定のファイルをそこにコピーする単純な PHP スクリプトがあります。フォルダー (およびコピーされたファイル) には、すべて 755 のアクセス許可があります。問題は、ユーザーを Apache として設定することです。現在、FTP を介して権限を削除または変更できません。DirectAdmin で「所有権をリセット」することしかできません。ここで、ユーザーが「Apache」から「matthdc58」に変更されていることがわかります。
ユーザーとして「matthdc58」を使用してPHPにフォルダーを作成させるにはどうすればよいですか? 私は試しました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」に変更できません。
- 現在、所有者が「Apache」であるため、FTPを介してフォルダーを編集できません。
- 「所有権の復元」ボタンを使用して DirectAdmin からのみ所有権を復元できます。