您可以嘗試使用此代碼,我只剩下幾個TODO步驟(對不起!沒有時間了,而且它太大了,無法將其作爲註釋)完成。你把這段代碼放在index.php文件的開頭,每次包含失敗時調用正確的文件名。
你必須單獨測試它,因爲它從php返回的警告中獲取文件名。我的PHP版本在括號中返回文件名不知道你的。測試代碼以瞭解它的工作原理。
<?PHP
/*****************put this at the very top*********************************/
$flag=2;
function correctFileName($incorrectFileName)
{
//directory and file to look at/for
$dirToLookAt = dirname($incorrectFileName);
$fileToLookFor = basename($incorrectFileName);
//get all .php files
$files = array(); $directory = opendir($dirToLookAt);
while($item = readdir($directory))
if(is_string(strstr($item,'.php')))
$files[] = $item;
//to do
/*
loop through the $files array and to
a case insensitive search for $incorrectFileName
if you find one then rename the file you found to $incorrectFileName
then break the loop
*/
}
//error handler function
function customError($errno, $errstr)
{
global $flag;
//find the file name
if($errno==2 and (($flag%2)==0))
{
//this will allow to enter only once per time
$flag++;
//get the file name
$start = strpos($errstr, '(') +1;//7
$length = strpos($errstr, ')') - $start ;//10
correctFileName(substr($errstr, $start ,$length));
}
}
//set error handler
set_error_handler("customError");
/*****************************************************************/
//trigger error
include 'c:\www\home\122221.php';
?>
此外,代碼假定目錄部分名稱是正確的!否則你也必須這樣做。
歡迎來到SO。請參閱常見問題解答,瞭解需要問什麼類型的問題。只是因爲你想要的東西並不意味着你有一個問題。其次,你需要自己做一些基本的東西,例如獲取關於您將應用程序複製到的服務器操作系統的計算機課程,以瞭解更多信息。 – hakre
之前你是在Windows服務器上還是什麼?幾乎每個* nix系統上的路徑都區分大小寫。 – Amber
如果您已經從Windows主機遷移到Linux主機,您可能會失敗。它是解析這些文件路徑的操作系統,而不是PHP,通常,非Win文件路徑是區分大小寫的。 –