私はubuntuのphpで働いています。アクセスを拒否されたWebページ上の画像を使用すると、ページに警告が表示されます。表示する前に確認したいのですが、開く権限がない場合は、開くアクセス権を付与してください。ターミナルコマンドで行うように。
chmod 777 myimage.jpg
これを確認し、phpのファイルへのフルアクセスを許可する方法。
ありがとう
私はubuntuのphpで働いています。アクセスを拒否されたWebページ上の画像を使用すると、ページに警告が表示されます。表示する前に確認したいのですが、開く権限がない場合は、開くアクセス権を付与してください。ターミナルコマンドで行うように。
chmod 777 myimage.jpg
これを確認し、phpのファイルへのフルアクセスを許可する方法。
ありがとう
関数is_readable()およびis_writable( )を確認してください。
例:
$filename = '/home/myuser/example.txt';
if (is_readable($filename) && is_writable($filename))
{
echo "File has read and write permissions.";
}
is_readable()を使用して、ファイルがPHPプロセスで読み取り可能かどうかを確認します。
chmod()を使用して、ファイルのアクセス許可を変更します。
また、is_writable()を使用してファイルに書き込めるかどうかをテストしたり、file_exists()を使用してファイルが存在するかどうかを確認したりできます。
あなたができることの1つは、fileowner
関数(およびposix_getpwuid
)を使用して、PHPユーザーが何であるか(多くの場合)と比較することwww-data
です。
ユーザーが同じ場合は、必要に応じて権限を変更できます。ただし、最初にファイルが書き込み可能かどうかを確認してください。
更新:chmod
andchown
関数は成功するとTRUEを返し、失敗するとFALSEを返すため、if句に入れることをお勧めします。error_reporting(0);
スクリプトの先頭で設定するか、次の@
ような記号を使用することで、エラー出力を抑制することができます。
if ( @chmod($filename, 0666) ) {
// do whatever with file
}
else if ( @chown($filename, 1000) ) {
chmod($filename, 0666);
// do whatever with file
}
else {
// can't change permissions
}
ファイルが参照されるたびにPHPからオンザフライでこれを行うことは、ファイルを管理するための非常に非効率的な方法です。また、すべてのファイルアクセスをPHPスクリプトを介して仲介する必要があります。また、コンテンツを誰でも書き込み可能にすることは、セキュリティの観点からかなり厄介です。
管理スクリプトを1回実行して既存のファイルのアクセス許可を整理し、新しいファイルがシステムに入るときの問題を修正します。
もちろん、ウェブサーバーuid以外の誰かとしてシェルアクセス/シェルアクセスを持っていない場合は、PHPを使用してこれを実装する必要があります(したがって、readdir / is_readable / is_writeable)。
Webサーバーでファイルがどのように表示されるかを知らなければ、特定のソリューションを推奨することは困難です。
C。
ファイルを読み取り可能/書き込み可能にするためにできることの1つは、ファイル/フォルダーの作成時に2番目の引数なしでこの関数を呼び出すことです。
function AutoChmod($path, $chmod = null)
{
if (file_exists($path) === true)
{
if (is_null($chmod) === true)
{
$chmod = (is_file($path) === true) ? 644 : 755;
if (in_array(get_current_user(), array('apache', 'httpd', 'nobody', 'system', 'webdaemon', 'www', 'www-data')) === true)
{
$chmod += 22;
}
}
return chmod($path, octdec(intval($chmod)));
}
return false;
}
例:
AutoChmod('/path/to/file/you/just/created.txt');
この関数は、SuPHP / SuExecPHPを使用しているかどうかに関係なく、適切な権限を付与します。
is_readable()
権限を確認するには、関数とを使用する必要がありますis_writable()
。