अपाचे इसे निष्पादित करने के बजाय PHP कोड दिखाता है


107

मैं हाल ही में अपने कंप्यूटर पर PHP और Apache स्थापित करने की कोशिश कर रहा हूं। कई घंटों के बाद, वे स्थापित हैं। मैंने httpd.conf और php.ini फ़ाइलों को संशोधित किया है जैसे हर कोई कहता है। मैंने तब एक सरल PHP स्क्रिप्ट बनाई:

<?php phpinfo(); ?>

लेकिन जब मैं इसे इसके साथ चलाने की कोशिश करता हूं तो http://127.0.0.1/phpinfo.phpइसे निष्पादित करने के बजाय केवल स्रोत कोड दिखाता है। मैं Apache 2, PHP 5 और Windows Vista का उपयोग कर रहा हूं।

कुशल लाइनें:

php.ini:

short_open_tag = On

httpd.conf

LoadModule php5_module "C:/php/php5apache2_2.dll"
AddType application/x-httpd-php .php
AddType application/x-httpd-php-source .phps
PHPIniDir "C:/php"

phpinfo.php में आपने कुछ हेडर जोड़े हैं जो .php फाइल को पठनीय बनाते हैं?

@Peteris नहीं मेरी पूरी स्क्रिप्ट मेरे सवाल में है
imulsion

सरल स्क्रिप्ट आज़माएं: <?php echo "Hello world"; ?>क्या यह हैलो वर्ल्ड प्रदर्शित करता है? यदि यह कोड प्रदर्शित करता है तो @RabNawaz ने कैसे कहा कि आपका सर्वर सही तरीके से कॉन्फ़िगर नहीं किया गया है!

बस फिर से कोड प्रदर्शित करता है :(
imulsion

1
आप अपनी php फ़ाइल कहाँ से एक्सेस कर रहे हैं? कृपया ध्यान दें कि आपके सर्वर द्वारा php फ़ाइल को निष्पादित करने के लिए आपको अपनी फ़ाइलों को उचित वेब रूट निर्देशिका में रखने की आवश्यकता है। और इसे अपने वेब ब्राउजर में http://localhost/याhttp://127.0.0.1/
इब्राहिम अजहर अराम

जवाबों:


90

आपको php को सक्षम करना होगा! mods-enabledApache डायरेक्टरी में फोल्डर को चेक करें (डिफ़ॉल्ट:) /etc/apache2/यह देखने के लिए कि क्या आपको कोई फाइल मिली है php। मुझे विस्तार याद नहीं है लेकिन मुझे लगता है कि यह है .so

यह देखने के /var/log/apache2/error.logलिए भी देखें कि क्या आपके पास कोई अन्य त्रुटि है।


8
क्या आपने चलाया है: a2enmod php5
डैनियल

6
theres no mods_enabled फोल्डर मेरी अपाचे डायरेक्टरी में
imulsion

मेरे मामले में @imulsion यह माध्यम से सक्षम था / etc / apache2 /
सिल्वर ऑक्ट

6
Php7 के लिए मेरे मामले में, मुझे करना पड़ा a2enmod php7.0और इसने मेरी समस्या को हल कर दिया। किसी तरह इस पोस्ट तक पहुँचने में पूरा दिन लग गया!
Rorschach

3
इसमें कोई फ़ाइल नहीं phpहै mods-enabled, अब क्या है? यह उत्तर सामान की व्याख्या नहीं करता है
ब्लैक

61

वाह, यहाँ समाधान के बहुत सारे! यहाँ मैंने Ubuntu 16.04 पर क्या किया है :

sudo apt-get install php libapache2-mod-php
sudo a2enmod mpm_prefork && sudo a2enmod php7.0
sudo service apache2 restart

Apt --reinstall-get को जोड़कर मेरे लिए काम किया । हो सकता है php मॉड्यूल / अपाचे इंस्टॉलेशन गंदा था।
ग्लैस्टिस

इसने मेरे लिए डिजिटल ओशन के उबंटू 16.04 सर्वर पर काम किया, धन्यवाद
सुशांत भार्गव

यह मेरे निम्न त्रुटियों देता है: Considering conflict php5 for php7.0, Considering conflict mpm_worker for mpm_prefork, आदि ... और apache2 पुनः आरंभ करने में विफल रहता है
mrid

यदि आप जाते Considering conflict php5 for php7.2हैं /etc/apache2/mods-availableऔर हटाते हैंphp5.*
साइमन एप्सकैंप

39

PHP 7 के लिए (मई पिछले संस्करणों पर भी लागू हो सकता है), लेकिन मुझे यह करना था:

इसे /etc/apache2/apache2.conf के नीचे जोड़ें

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

इसे टर्मिनल से चलाएँ:

sudo a2dismod mpm_event && sudo a2enmod mpm_prefork && sudo a2enmod php7

फिर अपाचे को पुनः आरंभ करना न भूलें ताकि यह पता चले कि आपने सामान बदल दिया है:

sudo service apache2 restart

यह इसका एक सारांश है: https://www.atlantic.net/community/howto/try-php7-lamp-ubun-14-04//


3
मुझे OSX El Capitan पर PHP 5.6 के लिए ऐसा करना था। (स्टॉक अपाचे का उपयोग करते हुए, लेकिन homebrew php56)
rfay

1
विंडोज पर भी काम करता है (जिसका अर्थ है कि आपको विंडोज पर टर्मिनल कमांड नहीं चलाना है) मुझे अंतहीन खोजों को बचाने के लिए धन्यवाद।
चेज-अज़ेह

स्रोत से इंस्टॉल करते समय, इस फाइलमाच की आवश्यकता थी। (विन्यास और मेक आदि मेरे लिए httpd.conf में मॉड्यूल को सक्षम करता है, लेकिन यह जोड़ा नहीं गया है।)
user7296055

नमूना httpd.conf फ़ाइल में एक अरब टिप्पणियाँ हैं; क्या कोई समझा सकता है कि php के लिए कोई क्यों नहीं है? यह शायद ही कभी इस्तेमाल होने वाली चीज नहीं है।
डेनियल

@Danial httpd.apache.org/support.html में कई विधियाँ हैं जहाँ आप डॉक्स पा सकते हैं, बग्स की रिपोर्ट कर सकते हैं, और प्रश्न पूछ सकते हैं (जैसे कि httpd.conf में PHP का उपयोग करने का कोई बड़ा उदाहरण क्यों नहीं है?)
RyanNerun

24

फ़ाइल खोलें

/etc/apache2/httpd.conf

और बदल जाते हैं

#LoadModule php5_module libexec/apache2/libphp5.so

में

LoadModule php5_module libexec/apache2/libphp5.so

तो बस PHP मॉड्यूल लोड में असुविधाजनक httpd.conf


मेरे मामले में लाइन php7_module के साथ शुरू हुई - लेकिन अन्यथा यह मेरे लिए काम करती है!
b0rgBart3


6

एक अलग जवाब जिसने मेरे लिए काम किया। वह स्थापित करने के लिए है[sudo] apt-get install libapache2-mod-php5.X


1
मेरा भी ऐसा ही था। मैंने "sudo apt-cache खोज ^ libapache2 | grep php" किया जो संबंधित पैकेजों को ढूंढता है और फिर "sudo apt-get install libapache2-mod-php" स्थापित करता है। libapache2-mod-php7.0 पहले से ही स्थापित था।
वेक्टरवॉर्टक

3

ठीक है अगर आपने कोशिश की है कि आपको ऊपर या पहले बताई गई है (जो संभावित कारण हैं) और यह अभी भी इसे निष्पादित करने के बजाय कोड प्रदर्शित करता है तो एक बात है जो आप गलत कर रहे हैं जिसे संबोधित नहीं किया गया है। आपके द्वारा उपयोग किया जाने वाला url आपके php कोड का उपयोग करता है; कुछ लोग केवल वेब ब्राउज़र में .php फ़ाइल को खींचकर अपने php कोड को निष्पादित करने का प्रयास करते हैं। यह गलत अभ्यास है और इस तरह की समस्या को जन्म दे सकता है। यदि आपने C: // wamp / www फ़ोल्डर में "test.php" के रूप में एक फ़ाइल सहेजी है, तो आपको इस फ़ाइल को इस तरह एक्सेस करना होगा: localhost: //test.php। जब आप इसे इस तरह से एक्सेस करेंगे तो इस तरह की गलती सामने आएगी: लोकलहोस्ट: //wamp/www/test.php

आशा है कि मैंने वहां किसी की मदद की। ओ / ~ डैनियल


3

मामले में मेरे लिए जो काम किया गया है उसे पोस्ट करने से किसी को सड़क पर आने में मदद मिलती है, हालांकि यह एक असामान्य मामला है।

मैंने अपने वेब होस्ट को उनके डिफ़ॉल्ट की तुलना में php के उच्च संस्करण का उपयोग करने के लिए मजबूर करने के लिए एक हैंडलर सेट किया था। वहाँ 5.1 था, लेकिन मैं 5.6 चाहता था तो मेरे पास यह था:

<FilesMatch \.php$>
    SetHandler php56-cgi
</FilesMatch>

मेरी .htaccess फ़ाइल में।

जब मेरी साइट को स्थानीय रूप से चलाने की कोशिश की जा रही है, तो उसमें ब्राउज़र के आउटपुट होने के कारण php कोड है। इसे हटाने से समस्या हल हो गई।


3

अपाचे फिक्स्ड इश्यू को निष्पादित करने के बजाय php कोड दिखाता है

1. खोला php5.6 conf या php7.x conf

# निम्नलिखित आदेश:

$ sudo vi /etc/apache2/mods-enabled/php5.6.conf

2. निम्नलिखित पंक्तियों पर टिप्पणी की

यहां छवि विवरण दर्ज करें

3. सर्वर को पुनरारंभ किया गया

$ sudo सेवा apache2 पुनरारंभ

4 आनंद लें :)


2

आप अपनी .htaceess फ़ाइल को हटा सकते हैं और सिस्टम को एक नया (रिक्त या मूल) बनाने देता है। यह हो सकता है कि आपके द्वारा जोड़ी गई कुछ पंक्तियाँ गलत कथन हैं, या अंदर कुछ और समस्या पैदा कर रही है। फिर आप अपनी पुरानी .htaccess फ़ाइल से लाइन जोड़कर देख सकते हैं कि समस्या क्या थी।

मेरे लिए यही काम किया। मशीन बता रही है कि php एक्सटेंशन प्रदर्शित नहीं करने वाली मशीन मेरे मामले में समस्या थी ( RewriteCond और RewriteRule )। मेरी पुरानी .htaccess फ़ाइल ने एक साझा सर्वर पर ठीक काम किया, लेकिन जब मैंने VPS पर स्विच किया तो यह समस्या सामने आई।


इसके अलावा अगर आप कोर्स मूर्खता में चलते हैं: चलाएं sudo a2enmod headersऔर sudo a2enmod rewrite(अपाचे को फिर से शुरू करने के लिए मत भूलना)।
रेयाननरड

2

इस सुझाव पर अन्य लोगों को उनके सुझावों के लिए धन्यवाद। उल्लिखित चरणों के बाद मैंने पाया कि अपाचे सर्वर एक loadफ़ाइल में एक सिंटैक्स त्रुटि की रिपोर्ट करना शुरू करने में सक्षम नहीं था /etc/apache2/mods-enabled। यह बताता है कि php7.0 और php7.1 दोनों सक्षम थे।

a2dismod php7.0
systemctl restart apache2

और php को फिर से सही तरीके से प्रस्तुत किया गया है।


1

यदि मॉड्यूल यूजरडियर सक्षम है और आपकी साइट एक यूजरड (~ / public_html) में है, तो आपको /etc/apache2/mods-enabled/php5.conf की जांच करनी चाहिए। निम्नलिखित भाग इसे काम करता है (Ubuntu 14.10 यूटोपिक पर):

# Running PHP scripts in user directories is disabled by default
# 
# To re-enable PHP in user directories comment the following lines
# (from <IfModule ...> to </IfModule>.) Do NOT set it to On as it
# prevents .htaccess files from disabling it.

# <IfModule mod_userdir.c>
#     <Directory /home/*/public_html>
#        php_admin_flag engine Off
#    </Directory>
# </IfModule>

1

यदि आप एक ubuntu उपयोगकर्ता हैं, तो अपाचे स्थापित करने के बाद नए इंस्टॉलेशन में निम्न कमांड को चलाना होगा

sudo apt-get install php5 libapache2-mod-php5 php5-mcrypt

मेरे मामले में ठीक काम करता है।


1

मेरे लिए क्या काम किया:

सक्रिय httpd.conf में, खोजें

<IfModule mime_module>
...
</IfModule>

यह निम्नलिखित याद आ रही थी

AddType application/x-httpd-php .php
AddHandler application/x-httpd-php .php

Apache को पुनरारंभ करने के बाद .php फ़ाइलों को सही ढंग से पार्स किया जाता है।


1

उपरोक्त में से कोई भी मेरे लिए लागू या काम नहीं किया ... PHP7, Apache Httpd 2.2 CentOS 6 पर

तथ्य यह है, मैंने स्थापित किया है (सभी यम के साथ) php आगे Apache ... आपको रिवर्स करना होगा: हमेशा Apache को पहले स्थापित करें, फिर PHP, और फिर यह काम करता है ... वास्तव में, आप संभवतः लापता हैं libphp7.soऔर libphp7-zts.soमें/etc/httpd/modules/

मैं PHP की स्थापना रद्द किए बिना किसी भी तरह से पुनर्प्राप्त करने में सक्षम था। मैंने इसमें मैजिक लाइन जोड़ी /etc/httpd/conf/httpd.conf: AddType application/x-httpd-php .php और फिर चला:yum install php php-mysql


1

PHP7 और Apache2.4 के लिए, आपको बस इतना करना है:

sudo vim /etc/httpd/conf/httpd.conf

बहुत नीचे जाएं और निम्नलिखित डालें (सभी अपने आप):

<FilesMatch "\.*">
SetHandler application/x-httpd-php
</FilesMatch>

Apache अब PHP के साथ सब कुछ निष्पादित करेगी। यदि आपके पास html और php फाइलें हैं, तो यह आपके लिए ठीक काम करेगा। यदि आपके पास अन्य प्रकार की फाइलें हैं, तो आपको फाइल को अपनी स्थिति के अनुरूप बनाने की आवश्यकता होगी। मैंने इसे phpMyAdmin के साथ परीक्षण किया है और यह एक समस्या नहीं लगती है .... अब तक।

उस अन्य सामान के बारे में सभी लोग यहां बात कर रहे हैं जो मेरे लिए आवश्यक था। जब मैंने "AddType Application ....." चीज़ को सही जगह पर रखा, तो Apache ने मुझे बताया कि उस मॉड्यूल को पहले ही लोड कर लिया गया था और उसे छोड़ दिया गया था।

अधिक जानकारी यहां पाई जा सकती है: https://httpd.apache.org/docs/2.4/mod/core.html##miles

मेरी स्थापना इस प्रकार की गई:

sudo yum install -y httpd24 php70 mysql56-server php70-mysqlnd

आपको यह भी पढ़ना चाहिए, यदि आप नहीं हैं: https://httpd.apache.org/docs/current/howto/htaccess.html#when


0

MAMP में $ _POST चलाते समय मेरे साथ भी ऐसा हुआ था। मेरी .ini और httpd फ़ाइलों में से सभी को सही ढंग से सेट किया गया था। यदि आप फॉर्म हैंडलिंग कर रहे हैं और आपके पास HTML डॉक्यूमेंट है और $ POST चलाने वाले php फॉर्महैंडर को जानकारी पोस्ट कर रहे हैं, तो सुनिश्चित करें कि आप अपने सर्वर के माध्यम से लोकलहोस्ट से html फाइल चला रहे हैं, न कि केवल स्थानीय रूप से।

यह एक शॉर्टकट था जो मैंने html दस्तावेज़ों को चलाने के लिए किया था, बस अपनी निर्देशिका में html फ़ाइल पर क्लिक करके और अपने वेब ब्राउज़र में लॉन्च करके, जब वास्तविकता में यह जांचने के लिए कि क्या आपके फॉर्म में php संसाधित हो रहा है, तो आपको अपने सर्वरों के माध्यम से अपना html चलाना होगा। एक बहुत ही सरल प्रोटोकॉल जिसे मैंने अनदेखा कर दिया।

उदाहरण:

गलत: file:///Applications/MAMP/htdocs/form/form.html

सही: http://localhost:your port number/form/form.html

अब आपके सबमिट बटन पर क्लिक करने के बाद php को संसाधित किया जाना चाहिए


0

मॉड्यूल की डेबियन / उबंटू डिफ़ॉल्ट कॉन्फ़िगरेशन के कारण मुझे एक ही समस्या थी suphp। इसमें suPHP_Engine offसंपूर्ण / usr / शेयर शामिल है, जिसके परिणामस्वरूप php स्रोतों को ब्राउज़र में दिखाया जा रहा है। के साथ निष्क्रिय करना a2dismod suphpअंतरिम समाधान था।


0

मुझे भी यही समस्या थी। जब मैं एक php फ़ाइल चलाता हूं, तो वेब ब्राउज़र ने मुझे निष्पादित करने के बजाय php कोड दिखाया। मैंने कई बार कोशिश की थी: 2 दिनों के बाद PHP / Apache सेटिंग्स / मॉड्यूल आदि के आसपास काम करने वाले wampserver64 को अनइंस्टॉल / रीइंस्टॉल करें: मुझे एहसास हुआ कि जब मैंने डिफ़ॉल्ट संयोजन "ttrl + दबाकर नोटपैड ++ के भीतर php फ़ाइल को चलाने की कोशिश की थी। क्रोम के लिए alt + shift + R ”। यह मेरे php फ़ाइल को निष्पादित करने की कोशिश कर रहा था जैसे: "file /// C: / wamp64 / www / bla / bla .." मेरे क्रोम के एड्रेस बार में। यही मेरी समस्या थी। मैंने स्थानीय कॉन्फ़िगरेशन पर php चलाने के लिए पृष्ठ कॉन्फ़िगर करने नोटपैड ++ के अनुसार बदलाव किए ? । मेरी समस्या हल हो गई। लेकिन 2 दिन बाद ।।


0

व्यवस्थापक के रूप में Xampp (अपाचे) चलाएँ। Google क्रोम प्रकार में:

localhost/<insert folder name here>/<insert file name>

यानी यदि आपके द्वारा बनाया गया फ़ोल्डर "LearnPhp" है, तो फ़ाइल "Chapter1.php" है

localhost/LearnPhp/chapter1.php

मैंने इस फ़ोल्डर को htdocs फ़ोल्डर में xampp फ़ोल्डर में बनाया है जो xampp डाउनलोड करते समय बनाया जाता है।


0

डेबियन 9 समाधान:

touch /etc/apache2/conf-available/php.conf 

अगली पंक्तियों को फ़ाइल में जोड़ें:

<IfModule mod_php5.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>
<IfModule mod_php.c>
    <IfModule mod_mime.c>
        AddType application/x-httpd-php .php
    </IfModule>
    <FilesMatch ".+\.php$">
        SetHandler application/x-httpd-php
    </FilesMatch>
</IfModule>

फिर भागो:

a2enconf php && service apache2 restart

इसने मेरे लिए काम किया, लेकिन शुरू में नहीं। मैं उपयोगकर्ता निर्देशिकाओं में वेब सामग्री चला रहा हूं, जो डिफ़ॉल्ट रूप से अक्षम है। इसे सक्षम करने के लिए, अंतिम अनुभाग/etc/apache2/mods-available/php7.2.conf
टोनी एडम्स

0

कुछ बार अगर आपके पास php वर्जन का विरोध है तो ऐसा होता है कि इसे दूर करने के लिए कृपया नीचे दिए चरणों का पालन करें

चरण 1: यम सूची स्थापित | grep 'php'

अगर आपके पास php के कई संस्करण हैं जैसे php 5.6 और php 7.0 तो यह कॉन्फ्लिक्ट होगा

चरण 2: yum remove ** आपका php संस्करण **

चरण 3: फिर एपाचे को पुनरारंभ करें /etc/init.d/httpd restartयाservice apache2 restart


0

इस समाधान ने मेरे लिए काम किया। मैंने apache2 को शुद्ध किया और पुनः इंस्टॉल किया। यह purge और install के बाद हुआ। यदि यह पहली स्थापना है, तो आपको इस समस्या का सामना नहीं करना पड़ेगा।


0

मैंने ऊपर दिए गए कई समाधानों की कोशिश की हालांकि हमारे परिदृश्य में फिक्स fpm-मॉड्यूल को स्थापित करना था।

हमने php से पहले httpd स्थापित किया था, जो इस मुद्दे के साथ कुछ करने के लिए हो सकता है, लेकिन हल करने के लिए हमने निम्नलिखित को स्थापित किया:

यम मॉड्यूल स्थापित php: 7.2

इसने php-fpm-7.2.11-4.module + el8.1.0 + 5443 + bc1aeb77.x86_64.rpm मॉड्यूल स्थापित किया, जिसे हमने तब सक्षम किया:

systemctl enable --now php-fpm

उस बिंदु से हमने /etc/httpd/conf.d/php.conf को डिफ़ॉल्ट के रूप में छोड़ दिया और httpd को पुनः आरंभ किया

सेवा httpd पुनरारंभ

फिर सब कुछ काम कर गया।

आशा है कि यह मदद करता है, यह पता लगाने की तुलना में अधिक समय लग गया।


0

निम्न कॉन्फ़िगरेशन जोड़ें /etc/apache2/apache2.conf

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

और के apacheमाध्यम से पुनः आरंभ करेंsudo service apache2 restart

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.