2

私はubuntuのphpで働いています。アクセスを拒否されたWebページ上の画像を使用すると、ページに警告が表示されます。表示する前に確認したいのですが、開く権限がない場合は、開くアクセス権を付与してください。ターミナルコマンドで行うように。

chmod 777 myimage.jpg

これを確認し、phpのファイルへのフルアクセスを許可する方法。

ありがとう

4

5 に答える 5

8

関数is_readable()およびis_writable( )を確認してください。

例:

$filename = '/home/myuser/example.txt';

if (is_readable($filename) && is_writable($filename))
{
    echo "File has read and write permissions.";
}
于 2010-01-05T11:09:58.343 に答える
2

is_readable()を使用して、ファイルがPHPプロセスで読み取り可能かどうかを確認します。

chmod()を使用して、ファイルのアクセス許可を変更します。

また、is_writable()を使用してファイルに書き込めるかどうかをテストしたり、file_exists()を使用してファイルが存在するかどうかを確認したりできます。

于 2010-01-05T11:14:40.757 に答える
2

あなたができることの1つは、fileowner関数(およびposix_getpwuid)を使用して、PHPユーザーが何であるか(多くの場合)と比較することwww-dataです。

ユーザーが同じ場合は、必要に応じて権限を変更できます。ただし、最初にファイルが書き込み可能かどうかを確認してください。

更新:chmodandchown関数は成功すると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
}
于 2010-01-05T14:46:25.250 に答える
1

ファイルが参照されるたびにPHPからオンザフライでこれを行うことは、ファイルを管理するための非常に非効率的な方法です。また、すべてのファイルアクセスをPHPスクリプトを介して仲介する必要があります。また、コンテンツを誰でも書き込み可能にすることは、セキュリティの観点からかなり厄介です。

管理スクリプトを1回実行して既存のファイルのアクセス許可を整理し、新しいファイルがシステムに入るときの問題を修正します。

もちろん、ウェブサーバーuid以外の誰かとしてシェルアクセス/シェルアクセスを持っていない場合は、PHPを使用してこれを実装する必要があります(したがって、readdir / is_readable / is_writeable)。

Webサーバーでファイルがどのように表示されるかを知らなければ、特定のソリューションを推奨することは困難です。

C。

于 2010-01-05T14:10:14.423 に答える
0

ファイルを読み取り可能/書き込み可能にするためにできることの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()

于 2010-01-05T16:38:06.283 に答える