9 回答

TA貢獻1943條經驗 獲得超7個贊
一般是因為“糟糕的編程”,現在或以后都有可能出錯。
如果這是一個錯誤,請首先對變量進行適當的賦值:$ varname = 0;
如果它確實只是有時定義
if (isset($varname))
,請在使用之前測試它:如果是因為拼錯了,那就糾正錯誤
甚至可能在PHP設置中轉動警告

TA貢獻1789條經驗 獲得超8個贊
這意味著您正在測試,評估或打印尚未分配任何內容的變量。這意味著您要么輸入錯誤,要么需要先檢查變量是否已初始化為某些內容。檢查您的邏輯路徑,它可以設置在一個路徑中,但不能設置在另一個路徑中。

TA貢獻1812條經驗 獲得超5個贊
我不想禁用通知,因為它有用,但是想避免太多打字。
我的解決方案是這個功能:
function ifexists($varname){ return(isset($$varname)?$varname:null);}
所以,如果我想引用$ name和echo if exists,我只需寫:
<?=ifexists('name')?>
對于數組元素:
function ifexistsidx($var,$index){ return(isset($var[$index])?$var[$index]:null);}
在頁面中如果我想引用$ _REQUEST ['name']:
<?=ifexistsidx($_REQUEST,'name')?>

TA貢獻1942條經驗 獲得超3個贊
這是因為沒有定義變量'$ user_location'。如果您正在使用任何if循環來聲明'$ user_location'變量,那么您還必須有一個else循環并定義相同的循環。例如:
$a=10;if($a==5) { $user_location='Paris';} else { }echo $user_location;
上面的代碼將創建錯誤,因為if循環不滿足,并且在else循環中'$ user_location'未定義。仍然要求PHP回應變量。因此,要修改代碼,您必須執行以下操作:
$a=10;if($a==5) { $user_location='Paris';} else { $user_location='SOMETHING OR BLANK'; }echo $user_location;

TA貢獻1784條經驗 獲得超8個贊
回答“”他們為什么突然出現?我以前使用這個腳本多年,我從來沒有遇到任何問題?!?/strong>
大多數網站在“顯示所有錯誤,但不是'通知'和'已棄用'”的“默認”錯誤報告下運行是很常見的。這將在php.ini中設置并應用于服務器上的所有站點。這意味著示例中使用的那些“通知”將被抑制(隱藏),而其他錯誤(被認為更為關鍵)將被顯示/記錄。
另一個關鍵設置是可以隱藏錯誤(即display_errors
設置為“off”或“syslog”)。
在這種情況下會發生的事情是,error_reporting
更改為顯示通知(根據示例)和/或設置已更改為display_errors
屏幕(而不是抑制它們/記錄它們)。
為什么他們改變了?
顯而易見/最簡單的答案是,有人在php.ini中調整了這些設置中的任何一個,或者PHP的升級版現在使用了之前的不同php.ini。這是第一個看的地方。
但是,也可以覆蓋這些設置
.htconf(網絡服務器配置,包括虛擬主機和子配置)*
的.htaccess
在PHP代碼本身
其中任何一個也可以改變。
還有一個額外的復雜性,即Web服務器配置可以啟用/禁用.htaccess指令,因此如果.htaccess中的指令突然啟動/停止工作,那么您需要檢查它。
(.htconf / .htaccess假設您正在以apache身份運行。如果運行命令行,則不適用;如果運行IIS或其他Web服務器,則需要相應地檢查這些配置)
摘要
php.ini中的檢查
error_reporting
和display_errors
php指令沒有改變,或者你之前沒有使用不同的php.ini。.htconf(或vhosts等)中的檢查
error_reporting
和display_errors
php指令沒有改變.htaccess中的檢查
error_reporting
和display_errors
php指令沒有改變如果.htaccess中有指令,請檢查.htconf文件中是否仍允許它們
最后檢查你的代碼; 可能是一個無關的圖書館; 看是否
error_reporting
和display_errors
PHP指令已經被設置在那里。
添加回答
舉報