弊社ではLinux専用サーバーを使用しております。
PHPスクリプトでフォルダーを作成するたびに、apacheがフォルダーを所有しており、所有者をユーザーとアクセス許可に変更するために、ルート経由でサーバーに接続する必要があります。
しかし、これを修正するためにどの設定を変更すればよいかわかりません。
セーフモードのオン/オフを切り替えようとしましたが、うまくいきませんでした。
誰かが私を助けてくれたら嬉しいです
前もって感謝します
chownPHPコマンドとchmodPHPコマンドを使用してみましたか?
これを行うには2 つの方法があります。
chown()
その関数を実行してファイルのアクセス許可を変更できます。
または、FTP を使用してファイルを移動できる場合は、ファイルをドキュメント ルート ( public_html/
) の外にドラッグし、右クリックして、ファイルのアクセス許可を変更します。
CHMOD は、注目したいものです。777
誰でも、すべてのファイルにアクセスできるようになります。これをテストとして使用して、ファイルのアクセス許可があることを確認できます。ただし、パーミッションをオンにしておくことはお勧めしません777
。
これは移植性の問題であり、サーバーの構成 (つまり、mod_php または SuExec を使用した FCGI) に依存します。
chown
ファイルを作成した直後に関数を使用することができますが、実際の所有者が誰であるかを知っている場合にのみ機能します (常にそうであるとは限りません)。この問題を克服するために、過剰なアクセス許可を与えずに常に読み取りと書き込み (およびディレクトリの実行) を保証する、可能な限り最良のファイル モードを見つけようとする簡単な方法を作成しました。
function xChmod($path, $chmod = null) // adapted from phunction
{
if (file_exists($path) === true)
{
if (is_null($chmod) === true)
{
$chmod = (is_dir($path) === true) ? 777 : 666;
if (extension_loaded('posix') === true)
{
$user = posix_getpwuid(posix_getuid());
if (array_key_exists('name', $user) === true)
{
$chmod -= (in_array($user['name'], explode('|', 'apache|httpd|nobody|system|webdaemon|www|www-data')) === true) ? 0 : 22;
}
}
}
return chmod($path, octdec(intval($chmod)));
}
return false;
}
基本的に、2 番目の$chmod
引数を省略すると、デフォルトで0777
フォルダーと0666
ファイルが使用されますが、PHP が非標準ユーザーで実行されている場合は、モードが 22 減少し、0755
フォルダーと0644
ファイルが使用されます。これは既に存在するファイルに対してのみ機能することに注意してください。そのため、ディレクトリを作成する場合は、追加の予防措置が必要になります。