Apache PHP कोड दिखाते हुए - Mac पर macOS Sierra में अपग्रेड करने के बाद


4

मैं एक iMac का उपयोग कर रहा हूं जिसे मैंने अभी macOS Sierra में अपडेट किया है। इसके पहले यह एल कैपिटन चला रहा था।

मेरे El Capitan सेट अप के तहत मेरे पास Apache, PHP और MySQL इस गाइड के अनुसार कॉन्फ़िगर किया गया था । इसने बिना किसी समस्या के काम किया।

जब मैंने सिएरा को अद्यतन किया, तो यह कॉन्फ़िगर फ़ाइलों के भार से आगे निकल गया। इसलिए मैं गाइड के माध्यम से वापस चला गया और एल कैपिटन के तहत मेरे पास सब कुछ कॉन्फ़िगर किया।

http://localhostके रूप में मैं उम्मीद कर रहा हूँ काम कर रहा हूँ और मैं अपने webroot में फ़ाइलें देख सकते हैं। हालाँकि, अगर मैं एक PHP पेज खोलता हूँ, तो यह कच्चे PHP कोड को निष्पादित करने के बजाय दिखाता है।

मैं निम्नलिखित का उपयोग कर रहा हूं:

अमरीका की एक मूल जनजाति

  • सर्वर संस्करण : Apache / 2.4.23 (यूनिक्स)
  • सर्वर बनाया गया : अगस्त 8 2016 16:31:34

पीएचपी

  • PHP 7.0.10 (cli) (निर्मित: अगस्त 31 2016 10:25:51) (NTS)

मैक ओ एस

  • सिएरा 10.12

अपाचे लॉग फ़ाइल में त्रुटि संदेशों की तलाश करने की कोशिश करें, शायद/private/var/log/apache2/
meuh

यह एक पुराना उत्तर है - और अन्य लोगों ने इसका उत्तर दिया है- लेकिन जब आप यह कहते हैं कि आपका PHP संस्करण है: "PHP 7.0.10 (cli) (निर्मित: अगस्त 31 2016 10:25:51) (NTS)" ध्यान दें कि "cli ", इसका मतलब है कि" कमांड लाइन इंटरफ़ेस। "यह PHP नहीं है जो अपाचे के माध्यम से चल रहा होगा। अपाचे चलने वाला PHP एक मॉड्यूल के माध्यम से होता है जो अपाचे लोड करता है। इस प्रकार आप कमांड लाइन से जो PHP व्यक्ति प्राप्त करते हैं, वह कभी-कभी किसी ब्राउज़र में दिखाई देने वाली चीज़ों से बेतहाशा भिन्न हो सकता है।
जेकगोल्ड

जवाबों:


14

सिएरा PHP 5 के साथ आता है, PHP 7. नहीं, वैसे भी, जांचें कि क्या मॉड्यूल में लोड किया गया है httpd.conf:

LoadModule php5_module libexec/apache2/libphp5.so

यदि यह काम नहीं करता है, तो शायद आपने अपाचे को * .pp फ़ाइलों को php निष्पादक के रूप में पहचानने के लिए नहीं कहा है। ऐसा करने के लिए, httpd.confनिम्नलिखित पंक्तियों को खोजें और संपादित करें (यदि पहले से मौजूद नहीं हैं):

<FilesMatch .php$>
    SetHandler application/x-httpd-php
</FilesMatch>

और DirectoryIndexपैरामीटर संपादित करें :

<IfModule dir_module>
    DirectoryIndex index.php index.html
</IfModule>

एक अन्य सामान्य उपाय है छोटे खुले टैग को सक्रिय करना (यदि आपके PHP कोड में कोई है)। पता लगाएँ php.ini, स्ट्रिंग की खोज करें short_open_tag = Offऔर इसे बदल दें short_open_tag = On

अपाचे को फिर से शुरू करें।


मेरे मामले में, यह वर्चुअल होस्ट के माध्यम से सादा php कोड दिखा रहा था। विशिष्ट मॉड्यूल "LoadModule php7_module libexec / apache2 / libphp7.so" के बाद /etc/apache2/httpd.conf पथ में समस्या दूर हो गई है।
4:62 बजे sh6210

3

आपकी Apache किसी भी अधिक php फ़ाइलों को संसाधित नहीं कर रही है। लाइन है

LoadModule **php5_module** libexec/apache2/**libphp5.so**

आपकी कॉन्फ़िग फ़ाइल में /etc/apache2/httpd.conf

लेकिन आपने PHP7 स्थापित किया है। इसे इसमें बदलें:

LoadModule **php7_module** libexec/apache2/**libphp7.so**

या हो सकता है मॉड्यूल / mod_php.so या जब भी php मॉड्यूल स्थित हो।


1
यह काम करने के लिए प्रतीत नहीं होता है। /PStreet/etc/apache2/httpd.conf की लाइन 170 पर सिंटैक्स त्रुटि: सर्वर में libexec / apache2 / libphp7.so लोड नहीं किया जा सकता: dlopen (/usr/bibexec/apache2/libphp7.so, 10): छवि नहीं मिली
Andy

हम्म यह मेरे लिए काम कर रहा है, आश्चर्य की बात है, कैसे PHP संस्करण मेरे मैक में 5-7 के लिए अद्यतन किया गया, धन्यवाद
संदीप पी

1

सुनिश्चित करें कि #LoadModule php5_module libexec/apache2/libphp5.soलाइन मुख्य httpd.confफाइल में अनलॉक्ड है । अपाचे को पुनः आरंभ करने के लिए मत भूलना sudo apachectl restart


मैंने पहले ही यह कोशिश की। वह लाइन निश्चित रूप से असहज है और मैंने अपाचे को फिर से शुरू किया। एक 'विन्यास' भी किया और यह कह रहा है कि सिंटैक्स ठीक है।
एंडी

1
और भी अजनबी हो जाता है, लेकिन अगर मैं "AddType एप्लिकेशन / x-httpd-php .php" को /etc/apache2/httpd.conf में जोड़ता हूं और Apache को पुनरारंभ करता है तो यह PHP को प्रोसेस करता है। लेकिन यह 7.x (??!) के बजाय PHP 5.x का उपयोग कर रहा है
एंडी

एंडी की टिप्पणी में विन्यास रेखा ने मेरे लिए समस्या तय कर दी।
टिंकर

-1

मुझे भी यह समस्या थी। यह देखने के लिए कि क्या अभी भी आपकी वर्चुअल मेजबानों की सेटिंग है, अपने /pStreet/ect/apache2/extra/htttpd-vhosts.conf को देखें। मेरे मूल एक को httpd-vhosts.conf ~ पिछले नाम दिया गया था।


मैंने एक 'अंतर' किया और फाइलें बिल्कुल वैसी ही हैं।
एंडी

क्या आप गैर-php पृष्ठ पर नेविगेट कर सकते हैं?
कर्ट

हाँ, यह अनुरोधित किसी भी पेज को लोड करेगा। यह सिर्फ इतना ही है कि .php स्क्रिप्ट निष्पादन के बजाय PHP कोड (स्रोत कोड / पाठ के रूप में) दिखाती है।
एंडी

-1

आप ब्राउज़र फ़ाइल मेनू से खुली फ़ाइल का उपयोग करके .php फ़ाइल नहीं खोल सकते हैं, आपको अपने ब्राउज़र के पता बार में लोकलहोस्ट / info.php (या जो भी फ़ाइल और पथ आप खोलने की कोशिश कर रहे हैं) टाइप करना होगा ... यह मेरे लिए काम करता है कम से कम। आशा है कि आप इसे काम करेंगे।


मेरे मामले में, यह वर्चुअल होस्ट के माध्यम से सादा php कोड दिखा रहा था। विशिष्ट मॉड्यूल "LoadModule php7_module libexec / apache2 / libphp7.so" के बाद /etc/apache2/httpd.conf पथ में समस्या दूर हो गई है।
4:62 बजे sh6210
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.