2012-08-02 17 views
36

मैं MyPHP संस्करण को 5.4 (Xampp 1.7.3 से 1.8.0) अपग्रेड करता हूं।सख्त मानकों: संदर्भ चर द्वारा केवल चर निर्दिष्ट किया जाना चाहिए PHP 5.4

सख्त मानक:: केवल चर सी में संदर्भ द्वारा आवंटित किया जाना चाहिए: अब मैं सख्त मानकों त्रुटि, myDBconnection के लिए देख रहे हैं \ XAMPP \ htdocs \ alous \ शामिल लाइन पर \ dbconn.php 4

dbconn.php:

<?php 
defined('_VALID') or die('Restricted Access!'); 

$conn = &ADONewConnection($config['db_type']); // <--- This Line 4 

if (!$conn->Connect($config['db_host'], $config['db_user'], $config['db_pass'], $config['db_name'])) { 
    echo 'Could not connect to mysql! Please check your database settings!'; 
    die(); 
} 
$conn->execute("SET NAMES 'utf8'"); 
?> 

नोट: मैं सख्त मानकों को निष्क्रिय करने की जरूरत नहीं है इस विधि के साथ php.ini में error_reporting = E_ALL & ~E_NOTICE & ~E_STRICT! मैं अपना PHP कोड ठीक करना चाहता हूं।

+0

क्या चेतावनी गायब हो जाती है यदि आप लाइन 4 को '$ conn = ADONewConnection ($ config [' db_type ']) में संशोधित करते हैं; ' –

उत्तर

67

ताकि लाइन 4 इस तरह दिखेगा आप & (एम्परसेंड) प्रतीक को दूर करना चाहिए:

$conn = ADONewConnection($config['db_type']); 

से php's manual on assignment by reference:

PHP 5 के रूप में, नए ऑपरेटर एक संदर्भ रिटर्न स्वचालित रूप से, PHP 5.3 और बाद में, E_DEPRECATED संदेश में संदर्भ परिणामों द्वारा नए के परिणाम को निर्दिष्ट करने और पहले संस्करणों में एक E_STRICT संदेश असाइन करने का परिणाम।

+5

हालांकि वह' new' का उपयोग नहीं कर रहा है। – sam

+12

हां, '&' इस उदाहरण में हटा दिया जाना चाहिए, लेकिन कारण के लिए नहीं (जैसा कि @ एसएएम सुझाव देता है)। यह बस इतना है कि असाइनमेंट का परिणाम _variable_ नहीं है, जिसके परिणामस्वरूप E_STRICT संदेश होता है, न कि E_DEPRECATED चेतावनी, जो 'नया' ऑपरेटर के साथ होता है। वास्तव में, '= &' का उपयोग वास्तव में मान्य हो सकता है यदि 'ADONewConnection()' _function_ को [संदर्भ वापस लौटाएं] (http://www.php.net/manual/en/language.references.return.php)। – MrWhite

8

ऐसा इसलिए है क्योंकि आप किसी ऑब्जेक्ट को संदर्भ द्वारा असाइन करने का प्रयास कर रहे हैं। एम्पर्सेंड को हटाएं और आपकी स्क्रिप्ट को इरादे से काम करना चाहिए।

-13

मुझे यह समस्या भी थी।

मैं फेरबदल के बाद किसी भी परिवर्तन नहीं देखा था:

error_reporting = E_ALL 

display_errors = Off 

अपने ब्राउज़र बंद रहता है, और बंद कर दिया और Xamp एन त्रुटि संदेश जा चुके थे में अपाचे शुरू कर दिया।

+8

त्रुटि छिपाना समाधान नहीं है! – kanenas

+0

त्रुटि छिपाना एक अच्छा समाधान नहीं है। दुर्भाग्यवश, यह एक "समाधान" है जिसे मुझे समय-समय पर एक और बेहतर, समाधान खोजने की आवश्यकता है। –