2012-01-13 12 views
17

मैं अपने वेब आवेदन के लिए आधार के रूप में Silex ढांचे का उपयोग करने का प्रयास करें। हालांकि, अगर मैं * .phar संग्रह में शामिल करने की कोशिश, पीएचपी निम्न त्रुटि फेंकता है:PHP: कक्षा 'फर' नहीं मिला

Fatal error: Class 'Phar' not found in /var/www/framework/silex.phar on line 11 

निम्नलिखित प्रासंगिक लाइनों में हैं मेरी /etc/php/php.ini (Silex के डॉक्स में सुझाव के रूप में):

extension=phar.so 
phar.readonly = Off 
phar.require_hash = Off 
detect_unicode = Off 

PHAR लाइब्रेरी /usr/lib/php/modules/phar.so में मौजूद है जो मेरे php.ini

पर किसी भी पुस्तकालय के लिए एक्सटेंशन पथ के रूप में सेट है क्या किसी को पता है कि PHP इस त्रुटि को क्यों फेंक रहा है?

उत्तर

13

कोशिश को निर्दिष्ट path to the extension:

php -d extension=phar.so composer.phar <your_script> 

अन्य विकल्प:

  • आप एक अलग प्रयोग कर रहे हैं:

    आपके द्वारा प्रदत्त जानकारी के आधार पर, वहाँ कुछ संभावनाएं हैं php.ini। पुष्टि करने के लिए phpinfo() के आउटपुट की जांच करें, और यह सुनिश्चित करें कि आप सक्रिय एक संपादन कर रहे हैं।

  • /usr/lib/php/modules/phar.so पढ़ने योग्य नहीं है। सुनिश्चित करें कि वेब सर्वर उपयोगकर्ता इस फ़ाइल को पढ़ सकता है। आपके द्वारा पिछली बार php.ini को phar से संबंधित जानकारी जोड़ा

  • आपके वेब सर्वर को पुनः आरंभ नहीं किया गया है। अपने वेबसर्वर को पुनरारंभ करें।

+1

धन्यवाद, मैं आपके सभी सुझावों की जाँच की। दुर्भाग्यवश, त्रुटि वही बना है। – SecStone

+0

मैंने इसे सही उत्तर के रूप में चिह्नित किया क्योंकि आप एक अच्छी सूची प्रदान करते हैं जो कारण हो सकता है। मेरे मामले में, वेबसर्वर को इस तरह से कॉन्फ़िगर किया गया था कि php.ini पढ़ने पर चुपचाप विफल हो गया। इसलिए मुझे 'एक्सटेंशन = phar.so' लाइन के ऊपर कुछ पंक्तियों में कोई त्रुटि नहीं मिली। – SecStone

+0

मैंने php.ini को पढ़ने की कोशिश करते समय PHP को चुपचाप विफल होने के बारे में कभी नहीं सुना है। क्या आप कारण और समाधान पर विस्तार कर सकते हैं? –

0

एचएम। मैं तुम्हें require_once 'phar://silex/silex.phar/autoload.php'; बजाय require_once 'silex/silex.phar'; की जरूरत है। यदि यह मामला नहीं है तो हमें एक त्रुटि फेंकने वाले कोड को देखने की आवश्यकता है।

18

यह मेरे लिए काम करता है:

php -d extension=phar.so composer.phar [... your command ...] 

यह वर्तमान क्रम के लिए phar विस्तार भी शामिल है। साझा/वीपीसी सर्वर के लिए काम करता है।

0

मेरी होस्टिंग वातावरण में मैं PHP संस्करण संख्या निर्दिष्ट करने की जरूरत है। ईजी:

php-5.6 composer.phar

नहीं

php composer.phar

0

आशा इस कुछ प्रकाश डाला सकता है। मैं एक साझा मेजबान का उपयोग कर रहा था और संगीतकार को चलाने में परेशानी थी। मैं इस साइट का उपयोग http://avantidevelopment.com/install-composer-on-bluehost/ को एक सामान्य निर्देशिका सेट करने और इसमें संगीतकार स्थापित करने के लिए कर रहा था। मैं इसे पीछा किया, लेकिन मेरे अन्य नाम के लिए जोड़ने shoud मैं

alias composer='/ramdisk/php/54/bin/php54-cli ~/common/composer.phar' 

वह मेरे लिए चाल किया .bashrc के लिए निम्न आदेश गयी। उम्मीद है कि जो भी इस सेट पर एक प्रकाश बल्ब से stumbles।

0

Mageia 4 के लिए, Mageia 5, Mageia 6 उपयोगकर्ताओं

 
>> urpmi php-phar;echo done 
To satisfy dependencies, the following packages are going to be installed: 
    Package      Version  Release  Arch 
(medium "Core Release2") 
    php-bz2      5.6.30  2.mga6  x86_64 
    php-phar      5.6.30  2.mga6  x86_64 
326KB of additional disk space will be used. 
151KB of packages will be retrieved. 
Proceed with the installation of the 2 packages? (Y/n) y 


    $MIRRORLIST: media/core/release/php-bz2-5.6.30-2.mga6.x86_64.rpm 
    $MIRRORLIST: media/core/release/php-phar-5.6.30-2.mga6.x86_64.rpm 
installing php-phar-5.6.30-2.mga6.x86_64.rpm php-bz2-5.6.30-2.mga6.x86_64.rpm 
Preparing...      ############################################### 
     1/2: php-bz2    ############################################### 
     2/2: php-phar    ############################################### 
>>