有些东西让我发疯,如果我在IF语句中声明一个变量,我会得到一个Undefined变量。如果我将此变量声明在IF语句之上,则PHP Notice会消失。
我的代码:
if($tab_sel==FILENAME_DEFAULT){ // FILENAME_DEFAULT = index.php
if(...){
some functions
}
$nb_pages=ceil($count/$limit) : 0;
}
echo $nb_pages; //4000 is displayed on the page (OK),
但在Nginx日志中,我得到:
FastCGI sent in stderr: "PHP message: PHP Notice : Undefined variable nb_pages in /.../index.php
但是当我加载页面时,我可以看到nb_page正确显示(例如:值为4000),但是在日志中,未定义的变量..
在我的例子中,如果我在“if($ tab_sel == FILENAME_DEFAULT){”之上声明nb_pages,那么未定义的消失。
有什么想法吗?
答案 0 :(得分:2)
那是因为你在一个if内部创建了一个无法通过的变量。在这种情况下,变量将是未定义的,PHP将引发错误,因为它无法找到您之后要求的变量。
在if之前声明它,你就可以了。
$nb_pages;
if($tab_sel==FILENAME_DEFAULT){
if(...){
答案 1 :(得分:1)
我认为这可能是一个环境问题。尝试将FILENAME_DEFAULT
和$nb_pages
放入日志文件中:
file_put_contents(
'test.log',
date('[Y-m-d H:i:s] ')
. FILENAME_DEFAULT . "\t" . @$nb_pages . PHP_EOL,
FILE_APPEND
);
@
将阻止警告消息。
答案 2 :(得分:1)
我发现为什么它不起作用:
in case of a 404 error page (called FILENAME_404)
我还使用index.php文件,我在其中调用未声明的变量。
这就是为什么Nginx错误说 index.php ,不是因为它没有进入if($tab_sel==FILENAME_DEFAULT){
,而是因为在其他一些情况下我也使用 index.php < / strong>与tab_sel=FILENAME_404