我有以下PHP代码行:
<?
ini_set('display_errors', 'On');
error_reporting(E_ALL | E_STRICT);
if(file_exist('menu.xml'){
print("file exist");
$xml = simplexml_load_file('menu.xml');
print_r($xml);
}else{
print("cant find menu.xml");
exit('failed to open menu.xml');
}
?>
当我打开它时,浏览器中没有显示任何内容(我预计会出现错误消息)。我知道在if语句结束时有一个“)”缺失,但为什么不首先在php抛出错误。 一旦我修复它说未定义的函数file_exist()?根据php Simplexml文档,file_exist是一个有效的函数。
答案 0 :(得分:4)
您没有看到任何内容,因为语法错误会阻止脚本完全执行。由于脚本是无效的PHP,因此根本无法执行。所以你的display_errors
指令永远不会被执行。相反,使用php.ini中有关错误处理的设置,显然它们被设置为禁止所有错误输出。
答案 1 :(得分:1)
答案 2 :(得分:0)
你确定你没有想到file_exists()吗?
http://php.net/manual/en/function.file-exists.php
SimpleXML代码示例:
<?php
// The file test.xml contains an XML document with a root element
// and at least an element /[root]/title.
if (file_exists('test.xml')) {
$xml = simplexml_load_file('test.xml');
print_r($xml);
} else {
exit('Failed to open test.xml.');
}
?>
答案 3 :(得分:0)
正确的功能是file_exists()
而非file_exist()
答案 4 :(得分:0)
我认为由于语法错误而未执行代码,因此display_errors
和error_reporting
仍配置为系统默认值。
您必须在php.ini中或通过php_flag
和php_value
.htaccess-directive配置它们才能在语法错误的情况下生效。