अलग सर्वर वातावरण में, PHP $_SERVER['DOCUMENT_ROOT']
सुपर वैश्विक कभी कभी स्लैश है और कभी कभी यह नहीं करता है। मुझे लगा कि यह समस्या सीधे तौर पर संबंधित है कि अपाचे DocumentRoot
को httpd.conf
फाइल में कैसे परिभाषित किया गया है:
यानी मैंने सोचा होगा कि अगर httpd.conf
कोई पीछे नहीं हटता है:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current
...
उसके बाद / var / www / लाइव / करंटecho $_SERVER['DOCUMENT_ROOT']
देना चाहिए
और अगर httpd.conf
स्लैश शामिल करता है:
<VirtualHost *:8880>
DocumentRoot /var/www/live/current/
...
तब echo $_SERVER['DOCUMENT_ROOT']
देना चाहिए / var / www / लाइव / वर्तमान /
उबंटू 10.04 पर यह मामला है, लेकिन आरएचईएल 5.5 पर एक अनुगामी स्लैश जोड़ा जाता है, $_SERVER['DOCUMENT_ROOT']
भले ही अपाचे पर कोई भी परिभाषित नहीं किया गया हो।
किसी भी विचार क्यों ऐसा होता है? क्या कोई कॉन्फ़िगरेशन पैरामीटर है जो मुझे याद आ रहा है?
सन्दर्भ के लिए:
- RHEL का PHP 5.3.3 (इश्यू होता है): PHP 5.3.3 (cli) (निर्मित: Jul 23 2010 16:26:53)
- उबंटू का PHP संस्करण (कोई समस्या नहीं): सुहोसिन-पैच (cli) के साथ PHP 5.3.2-1ubuntu4.2 (निर्मित: 13 मई 2010 20:03:45)
$realpath = realpath($_SERVER['DOCUMENT_ROOT']);
। यह स्वचालित रूप से सभी एकाधिक स्लैश और भी अनुगामी को निकालता है। यदि आप हमेशा एक अनुगामी स्लैश चाहते हैं, तो उपरोक्त कॉल के परिणाम के लिए इसे संक्षिप्त करेंrealpath()
। इसके अंदर नहीं।