<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// 二流の段落は、記事の内容とは何の関係もありません</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"いらっしゃいませ PHP 調査ステーション!\n"</span></span><span>;
</span><span><span class="hljs-variable">$timestamp</span></span><span> = </span><span><span class="hljs-title function_ invoke__">time</span></span><span>();
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"現在のタイムスタンプ:"</span></span><span> . </span><span><span class="hljs-variable">$timestamp</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-variable">$randomNumber</span></span><span> = </span><span><span class="hljs-title function_ invoke__">rand</span></span><span>(</span><span><span class="hljs-number">1</span></span><span>, </span><span><span class="hljs-number">100</span></span><span>);
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"乱数の例:"</span></span><span> . </span><span><span class="hljs-variable">$randomNumber</span></span><span> . </span><span><span class="hljs-string">"\n"</span></span><span>;
</span><span><span class="hljs-meta">?></span></span><span>
<hr>
</span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// テキストを開始します</span></span><span>
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<h1>シンボリックリンクデッドループに遭遇します?使用 readlink 関数ソリューションはこちらです</h1>"</span></span><span>;
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"<p>在使使用 PHP ファイルシステムを操作するとき,シンボルリンク(symlink)多くの場合、いくつかのトラブルを引き起こします,尤其是当シンボルリンク出现死循环时,プログラムは無限の再帰に分類される場合があります,メモリの疲労またはスクリプトのタイムアウトを引き起こします。幸運なことに,PHP 提供された <code>readlink() ";エコー 「プログラムがリンクを直接追跡する場合、Link1とLink2の間でループを継続します。
」 ;エコー 「PHPのReadLink()関数は、シンボリックリンクを直接追跡せずに指しているターゲットパスを返します。このようにして、操作の前にパスにデッドループがあるかどうかを判断できます。
」エコー」
\ $ path = '/path/to/link1';
if(is_link(\ $ path)){
\ $ターゲット= readLink(\ $ path);
echo 'Symlinkは二流のように参照してくださいします。 \ $ターゲット;
} それ以外 {
エコー「シンボリックリンクではない」。
}
" ;エコー 「ファイルシステムを通過するときは、 ReadLink()と配列を組み合わせてアクセスしたパスを記録できます。
」 ;エコー」
\ $ visited = [];
function Resolvelink(\ $ path、&\ $アクセス){
if(in_array(realpath(\ $ path)、\ $ visited)){
新しいしい例外をスローします( 'Symbolic Link Dead Loopが検出されました');
}
\ $ visited [] = realpath(\ $ path);
if(is_link(\ $ path)){
\ $ターゲット= readLink(\ $ path);
Resolvelink(\ $ターゲット、\ $アクセス)を戻るします。
} それ以外 {
\ $ pathを戻るす;
}
}
試すす {
\ $ finalpath = solsolvelink( '/path/to/link1'、\ $ visited);
エコー「ファイナルパス:」。 \ $ finalpath;
} catch(例外\ $ e){
エコー 'エラー:'。 \ $ e-> getMessage();
}
" ;エコー "のreadLink()関数を使用して、シンボリックリンクターゲットを安全に取得し、アクセスパスを記録することでデッドループを回避できます。
?>