2010-10-08 10 views
16

मैं PHP से php का बिन पथ कैसे प्राप्त कर सकता हूं? मैंने इसे phpinfo() में देखा; लेकिन मुझे एक और विधि चाहिए जो इसे लिनक्स और विंडोज सिस्टम में प्राप्त करे।PHP से PHP BIN का मार्ग कैसे प्राप्त करें?

+0

संभव डुप्लिकेट (http://stackoverflow.com/questions/2372624/get-current-php-executable-from-within -स्क्रिप्ट) – Gordon

उत्तर

19

आप उपयोग कर सकते हैं:

$_SERVER['_'] 

इसके अलावा, the predefined constant PHP_BINDIR निर्देशिका जहां php निष्पादन योग्य पाया जाता है देता है।

नमूना Codepad और ideone पर नमूना।

सुरक्षा कारणों से, $_SERVER मूल्यों का खुलासा नहीं किया गया है। (मुझे लगता है। अगर मैं गलत हूं तो कृपया मुझे सही करें)।

+10

विंडोज़ में, PHP_BINDIR निरंतर "सी: \ php5" को इंगित करता है भले ही php एक पूरी तरह से अलग निर्देशिका में है, जैसे कि "सी: \ dev \ php"। यहां, PHP एक अपाचे मॉड्यूल के रूप में सेटअप है। – SirDarius

+0

दुर्भाग्यवश सर्वर पर मैं सर्वर लौटा था, मुझे सुरक्षा कारणों से लगता है। – Chris

+1

PHP_BINDIR ने डेबियन पर मेरे लिए काम किया। $ _SERVER ['_'] नहीं किया। –

8

पर्यावरण चर का उपयोग कर एक विधि, मानते हैं कि php निष्पादन योग्य सिस्टम पथ में है।

function getPHPExecutableFromPath() { 
    $paths = explode(PATH_SEPARATOR, getenv('PATH')); 
    foreach ($paths as $path) { 
    // we need this for XAMPP (Windows) 
    if (strstr($path, 'php.exe') && isset($_SERVER["WINDIR"]) && file_exists($path) && is_file($path)) { 
     return $path; 
    } 
    else { 
     $php_executable = $path . DIRECTORY_SEPARATOR . "php" . (isset($_SERVER["WINDIR"]) ? ".exe" : ""); 
     if (file_exists($php_executable) && is_file($php_executable)) { 
      return $php_executable; 
     } 
    } 
    } 
    return FALSE; // not found 
} 
+0

यह मेरे लिए विंडोज और लिनक्स दोनों पर काम करता है, धन्यवाद! – SeanDowney

+0

@ggirtsou मुझे आपका संपादन नहीं मिलता है ... विंडोज पथ में "php.exe" के साथ एक प्रविष्टि क्यों होगी? यदि यह XAMPP के लिए विशिष्ट है तो कृपया कम से कम कोड में एक सार्थक टिप्पणी जोड़ें। – SirDarius

+0

@ सरदारस हां संपादन XAMPP आउटपुट पर आधारित है। –

14

लिनक्स केवल php लगता है "जो" आदेश का उपयोग करें।

$phpPath = exec("which php"); 

नोट यह एक ही php निष्पादन योग्य है कि आपके वेब सर्वर का उपयोग किया जा सकता है की गारंटी नहीं है, बल्कि पहले उदाहरण है कि रास्तों के माध्यम से देख जबकि मिला था।

+0

अच्छा बिंदु लेकिन अधिकांश होस्टिंग सेवाएं ' निष्पादन 'बिल्कुल। – Hossein

+0

हां, कुछ मेजबान नहीं करते हैं, अन्य करते हैं, मुझे लगता है कि यह आपके संदर्भ पर निर्भर करता है। – SeanDowney

+1

यह आवश्यक रूप से सही PHP बाइनरी में परिणाम नहीं देता है, क्योंकि अपाचे और कमांड लाइन बहुत अलग-अलग उपयोग कर सकती है। –

4

शायद सबसे अच्छा समाधान सिम्फनी प्रक्रिया घटक में है: https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/PhpExecutableFinder.php और https://github.com/symfony/symfony/blob/master/src/Symfony/Component/Process/ExecutableFinder.php। उपयोग में:

<?php 
    use Symfony\Component\Process\PhpExecutableFinder; 

    $phpFinder = new PhpExecutableFinder; 
    if (!$phpPath = $phpFinder->find()) { 
     throw new \Exception('The php executable could not be found, add it to your PATH environment variable and try again'); 
    } 

    return $phpPath; 
1

आम तौर पर, विंडोज के तहत एक साधारण डिफ़ॉल्ट PHP स्थापना में, php.ini फ़ाइल PHP बाइनरी की एक ही निर्देशिका से स्थित और लोड होती है।

सरल बनाने के लिए Windows उपयोगकर्ता:

echo dirname(php_ini_loaded_file()).DIRECTORY_SEPARATOR.'php.exe'; 

देखा!

बेशक, यदि आप एकाधिक आईएनआई फाइलों का उपयोग कर रहे हैं, तो फाइलें एक ही PHP बाइनरी निर्देशिका में नहीं हैं, तो काम नहीं कर सकती हैं। बीटीडब्ल्यू, यह ज्यादातर मामलों में हल हो सकता है। विंडोज डेवलपर्स स्थानीय विकास पर्यावरण से PHP चला रहे हैं।

+0

क्षमा करें यह कहना भूल गया कि मैक –

4

विंडोज़ में, वैंप का उपयोग करके, आप इनआई वैरिएबल - extension_dir का उपयोग कर सकते हैं - क्योंकि यह php फ़ोल्डर में रखा गया है।

इस तरह:

echo str_replace('ext/', 'php.exe', ini_get('extension_dir')); 
0

यह बहुत आसान है!

var_dump(getenv('PHPBIN')); 

लेकिन यह केवल खिड़कियों में काम करता है, इसलिए हम इस ansver का उपयोग करना चाहिए - https://stackoverflow.com/a/3889630/2574125

मैं यह कैसे मिल गया? मैंने अभी echo echo phpinfo(); टाइप किया है और वहां php पथ खोजा है। जुज़ यहां देखें: how i found php path

तो मैं बस यहां प्राप्त कर रहा हूं: php getenv और ... आप परिणाम देखते हैं। इसका इस्तेमाल करो, दोस्तों।

+0

का उपयोग कर रहा हूं XAMMP पर गलत परिणाम देता है – ymakux

0

विंडोज, XAMPP

$php = getenv('PHPRC') . '/php.exe'; 

if(is_file($expected)){ 
    return $php; 
} 
की [स्क्रिप्ट के भीतर से वर्तमान पीएचपी निष्पादन प्राप्त करें?]