is_writeable 関数のバグ問題
[タイトル] PHPのis_writeable()関数にはバグがあり、ディレクトリ/ファイルが書き込み可能かどうかを正確に判定できません。ディレクトリ/ファイルが完全に書き込み可能かどうかを判定する関数を作成してください。
【レベル】レベル6
【解決策】 以下はCodeIgniterのis_really_writable関数の解決策です。詳細は関数のコメントを参照してください
。
このバグは 2 つの側面で存在します。
1. Windows では、ファイルが読み取り専用属性しか持たない場合、is_writeable() 関数は true を返しても、ファイルは書き込み可能であるとは限りません。
ディレクトリの場合は、そのディレクトリ内に新しいファイルを作成し、そのファイルを開いて判断します。
ファイルの場合は、ファイルを開く (fopen) ことで、ファイルが書き込み可能かどうかをテストできます。
2. Unix では、php 設定ファイルでセーフモードがオンになっている場合 (safe_mode=on)、is_writeable() も使用できません。
構成ファイルを読んで、safe_mode がオンになっているかどうかを確認します。
<code><span>/** * Tests for file writability * * is_writable() returns TRUE on Windows servers when you really can't write to * the file, based on the read-only attribute. is_writable() is also unreliable * on Unix servers if safe_mode is on. * *<span> @access</span> private *<span> @return</span> void */</span><span>if</span> ( ! function_exists(<span>'is_really_writable'</span>)) { <span><span>function</span><span>is_really_writable</span><span>(<span>$file</span>)</span> {</span><span>// If we're on a Unix server with safe_mode off we call is_writable</span><span>if</span> (DIRECTORY_SEPARATOR == <span>'/'</span><span>AND</span> @ini_get(<span>"safe_mode"</span>) == <span>FALSE</span>) { <span>return</span> is_writable(<span>$file</span>); } <span>// For windows servers and safe_mode "on" installations we'll actually</span><span>// write a file then read it. Bah...</span><span>if</span> (is_dir(<span>$file</span>)) { <span>$file</span> = rtrim(<span>$file</span>, <span>'/'</span>).<span>'/'</span>.md5(mt_rand(<span>1</span>,<span>100</span>).mt_rand(<span>1</span>,<span>100</span>)); <span>if</span> ((<span>$fp</span> = @fopen(<span>$file</span>, FOPEN_WRITE_CREATE)) === <span>FALSE</span>) { <span>return</span><span>FALSE</span>; } fclose(<span>$fp</span>); @chmod(<span>$file</span>, DIR_WRITE_MODE); @unlink(<span>$file</span>); <span>return</span><span>TRUE</span>; } <span>elseif</span> ( ! is_file(<span>$file</span>) <span>OR</span> (<span>$fp</span> = @fopen(<span>$file</span>, FOPEN_WRITE_CREATE)) === <span>FALSE</span>) { <span>return</span><span>FALSE</span>; } fclose(<span>$fp</span>); <span>return</span><span>TRUE</span>; } }</code>

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック









オープン ソースの詳細については、次のサイトを参照してください。 51CTO Honmeng 開発者コミュニティ https://ost.51cto.com 実行環境 DAYU200:4.0.10.16SDK: 4.0.10.15IDE: 4.0.600 1. アプリケーションを作成するには、[ファイル] をクリックします。 >新しいファイル ->プロジェクトの作成。テンプレートを選択します: [OpenHarmony] EmptyAbility: プロジェクト名 shici、アプリケーション パッケージ名 com.nut.shici、およびアプリケーションの保存場所 XXX (中国語、特殊文字、スペースは含まれません) を入力します。 CompileSDK10、モデル: ステージ。デバイス

ファイルのサイズを取得するには、Java の File.length() 関数を使用します。ファイル操作を扱うとき、ファイル サイズは非常に一般的な要件です。Java では、ファイルのサイズを取得するための非常に便利な方法、つまり length( ) File クラスのメソッド。この記事では、このメソッドを使用してファイルのサイズを取得する方法と、対応するコード例を紹介します。まず、サイズを取得したいファイルを表す File オブジェクトを作成する必要があります。 File オブジェクトを作成する方法は次のとおりです: Filef

PHP BLOB をファイルに変換する方法: 1. PHP サンプル ファイルを作成します; 2. 「function blobToFile(blob) {return new File([blob], 'screenshot.png', { type: 'image/jpeg' })」を通じて} 」メソッドを使用して、Blob をファイルに変換できます。

Java の File.renameTo() 関数を使用してファイルの名前を変更する Java プログラミングでは、ファイルの名前を変更する必要がよくあります。 Java には、ファイル操作を処理するための File クラスが用意されており、その renameTo() 関数でファイルの名前を簡単に変更できます。この記事では、Java の File.renameTo() 関数を使用してファイルの名前を変更する方法と、対応するコード例を紹介します。 File.renameTo() 関数は、File クラスのメソッドです。

ファイルの親ディレクトリを取得するには、Java の File.getParentFile() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。ファイルの親ディレクトリを取得する必要がある場合は、Java が提供する File.getParentFile() 関数を使用できます。この記事では、この関数の使用方法とコード例を説明します。 Java の File クラスは、ファイルやフォルダーを操作するために使用される主なクラスです。ファイルのプロパティを取得および操作するための多くのメソッドを提供します

ファイルの親パスを取得するには、Java の File.getParent() 関数を使用します Java プログラミングでは、ファイルやフォルダーを操作する必要がよくあります。場合によっては、ファイルの親パス、つまりファイルが存在するフォルダーのパスを取得する必要があることがあります。 Java の File クラスには、ファイルまたはフォルダーの親パスを取得する getParent() メソッドが用意されています。 File クラスは、ファイルとフォルダーを Java で抽象表現したもので、ファイルとフォルダーを操作するための一連のメソッドを提供します。その中で、手に入れてください

Java で File.delete() メソッドを使用してファイルまたはディレクトリを削除するにはどうすればよいですか?概要: Java では、File クラスの delete() メソッドを使用してファイルまたはディレクトリを削除できます。このメソッドは、指定されたファイルまたはディレクトリを削除するために使用されます。ただし、この方法では、他のプログラムによって開かれていない空のディレクトリまたはファイルしか削除できないことに注意してください。ファイルまたはディレクトリの削除が失敗した場合は、IOException をキャッチすることで特定の理由を見つけることができます。ステップ 1: 関連パッケージをインポートする まず、

Java の File.mkdirs() 関数を使用して複数レベルのディレクトリを作成する Java では、ファイルを保存および整理するためにフォルダーを作成する必要がよくあります。場合によっては、サブフォルダーを含むフォルダーであるマルチレベルのディレクトリを作成する必要があります。 Java では、この関数を実装するために File クラスの mkdirs() 関数が提供されています。 Fileクラスはファイルやディレクトリを扱うJavaのクラスで、ファイルやディレクトリを操作するための一連のメソッドを提供します。このうち mkdirs() 関数は、複数階層のディレクトリを作成する関数です。下
