<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()関数を使用して、シンボリックリンクターゲットを安全に取得し、アクセスパスを記録することでデッドループを回避できます。
?>