我是用的是phpstudy2014的套件
但是我在部分地方做了修改使其能夠同時相容php5.3和5.2.7版本
修改地方為 vhosts.conf
LoadFile "D:/phpStudy/php52/php5ts.dll"LoadModule php5_module "D:/phpStudy/php52/php5apache2_4.dll"PHPIniDir "D:/phpStudy/php52/"LoadFile "D:/phpStudy/php52/libmysql.dll"LoadFile "D:/phpStudy/php52/libmcrypt.dll" SetHandler application/x-httpd-php DocumentRoot "F:\github\xinyupingtai" ServerName d.hainuo.info ServerAlias hainuo.info Options FollowSymLinks ExecCGI AllowOverride All Order allow,deny Allow from all
這個是5.2的設定檔,之前因為使用了
error_reporting(0);
將所有錯誤屏蔽掉,但是因為一些原因(後來才發現是我使用了一個未引入的方法)導致程式輸出空白,於是我將錯誤報表改為error_reporting(E_ALL);但是我發現結果令我很崩潰,百度瀏覽器直接團出錯誤頁,ie11給我的還是空白頁。
類的匯入原理是
function __autoload($name){ $class_file = d('./class/' . $name . '.php'); if (file_exists($class_file)) { include($class_file); } else { if (strpos($name, '_') !== false) { $name = strtr($name, '_', '.'); if (!loadLib($name)) { //exit('class '.$name.' not include'); return false; } } else { //exit('class '.$name.' not include'); return false; } }}function loadLib($libName, $returnClass = false){ global $_libraryLoadLog; if (!isset($_libraryLoadLog[$libName])) { $libPath = WROOT . 'class' . D . strtr($libName, '.', D) . '.php'; if (file_exists($libPath)) { if (($f = strrpos($libName, '.')) !== false) { $libP = substr($libName, 0, $f) . '.'; //library parent } else { $libP = ''; } include($libPath); $_libraryLoadLog[$libName] = strtr($libName, '.', '_'); } else { $_libraryLoadLog[$libName] = ''; } } if ($_libraryLoadLog[$libName]) { if ($returnClass) { $className = $_libraryLoadLog[$libName]; $class = new $className(); return $class; } else { return true; } } return false;}
我是用了一個方法是 $dom=file_get_html(url);
此方法是simple_html_dom 類中內建的
simpe html dom類連結 點擊可以查看這個類的原始碼
當我使用var_dump一點點的測試出原因後才明白原來是我的那個dom類沒有匯入
把這個問題寫在這裡,是想問各位大大,
1、遇到這種情況,你們是怎麼偵錯工具的?
2、為什麼指定了輸出錯誤,卻仍然是空白,即php不報錯呢?
3、如果第二條不好回答,可否給解釋一下php的報錯原理
6.27修改
因為樓下提供的方法並不怎麼適用
一氣之下我將error_reporting(E_ALL);注釋掉,媽呀,竟然報錯了
Parse error: syntax error, unexpected '}' in F:\*****\lib\dialog.php on line 1018
不過還是感謝各位對我的協助。
回複內容:
我是用的是phpstudy2014的套件
但是我在部分地方做了修改使其能夠同時相容php5.3和5.2.7版本
修改地方為 vhosts.conf
LoadFile "D:/phpStudy/php52/php5ts.dll"LoadModule php5_module "D:/phpStudy/php52/php5apache2_4.dll"PHPIniDir "D:/phpStudy/php52/"LoadFile "D:/phpStudy/php52/libmysql.dll"LoadFile "D:/phpStudy/php52/libmcrypt.dll" SetHandler application/x-httpd-php DocumentRoot "F:\github\xinyupingtai" ServerName d.hainuo.info ServerAlias hainuo.info Options FollowSymLinks ExecCGI AllowOverride All Order allow,deny Allow from all
這個是5.2的設定檔,之前因為使用了
error_reporting(0);
將所有錯誤屏蔽掉,但是因為一些原因(後來才發現是我使用了一個未引入的方法)導致程式輸出空白,於是我將錯誤報表改為error_reporting(E_ALL);但是我發現結果令我很崩潰,百度瀏覽器直接團出錯誤頁,ie11給我的還是空白頁。
類的匯入原理是
function __autoload($name){ $class_file = d('./class/' . $name . '.php'); if (file_exists($class_file)) { include($class_file); } else { if (strpos($name, '_') !== false) { $name = strtr($name, '_', '.'); if (!loadLib($name)) { //exit('class '.$name.' not include'); return false; } } else { //exit('class '.$name.' not include'); return false; } }}function loadLib($libName, $returnClass = false){ global $_libraryLoadLog; if (!isset($_libraryLoadLog[$libName])) { $libPath = WROOT . 'class' . D . strtr($libName, '.', D) . '.php'; if (file_exists($libPath)) { if (($f = strrpos($libName, '.')) !== false) { $libP = substr($libName, 0, $f) . '.'; //library parent } else { $libP = ''; } include($libPath); $_libraryLoadLog[$libName] = strtr($libName, '.', '_'); } else { $_libraryLoadLog[$libName] = ''; } } if ($_libraryLoadLog[$libName]) { if ($returnClass) { $className = $_libraryLoadLog[$libName]; $class = new $className(); return $class; } else { return true; } } return false;}
我是用了一個方法是 $dom=file_get_html(url);
此方法是simple_html_dom 類中內建的
simpe html dom類連結 點擊可以查看這個類的原始碼
當我使用var_dump一點點的測試出原因後才明白原來是我的那個dom類沒有匯入
把這個問題寫在這裡,是想問各位大大,
1、遇到這種情況,你們是怎麼偵錯工具的?
2、為什麼指定了輸出錯誤,卻仍然是空白,即php不報錯呢?
3、如果第二條不好回答,可否給解釋一下php的報錯原理
6.27修改
因為樓下提供的方法並不怎麼適用
一氣之下我將error_reporting(E_ALL);注釋掉,媽呀,竟然報錯了
Parse error: syntax error, unexpected '}' in F:\*****\lib\dialog.php on line 1018
不過還是感謝各位對我的協助。
要想讓 php 把錯誤輸出到網頁,需要把 php.ini 的 display_errors = On。這個選項僅僅用於本地調試,千萬不要線上上網站上開啟。
php.ini 裡面的 error_log = /your/log/path 選項可以控制錯誤記錄檔輸出到哪個檔案,自己設定到一個方便查看的地方之後就可以不斷去查看了。
一般調試錯誤就是用錯誤記錄檔結合自己輸出的 log,當然,如果在本地跑還可以用 Zend Studio IDE 的各種調試功能。
if (!ini_get('display_errors')) { ini_set('display_errors', true);}