जब मैं लार्वा 8 प्रोजेक्ट खोलता हूं तो मुझे त्रुटि मिल रही है

 protected function switchToDatabase($database)
    {
        DB::purge();
 
        $default = config('database.default');
 
        config()->set(
            "database.connections.{$default}.database",
            $database,
        );
    }

वेंडर/लारवेल/फ्रेमवर्क/src/Illuminate/Testing/Concerns/TestDatabases.php में "वाक्यविन्यास त्रुटि, अनपेक्षित ')'"

8
Prem ThAqqar 29 जिंदा 2021, 11:14

7 जवाब

सबसे बढ़िया उत्तर

गर्ट बी उत्तर स्थिति को हल करता है, लेकिन आपको इसके बजाय अपने PHP को संस्करण 7.3 या उच्चतर में अपडेट करना चाहिए, जैसा कि मोहम्मद ने उल्लेख किया है, इसे हल करने के लिए। प्लेटफॉर्म/विक्रेता कोड बदलना सबसे अच्छा विकल्प नहीं है।

9
Hugo S 25 फरवरी 2021, 11:47
1
सच है, मैं इस हिस्से से चूक गया कि यह एक विक्रेता फ़ाइल थी .. इसका मतलब है कि उसने --ignore-platform-reqs के साथ स्थापित किया, यह एक अच्छा विचार नहीं है ... इसलिए इसके लिए अपवोट करें
 – 
Gert B.
25 फरवरी 2021, 00:58
@ गर्टबी। जरूरी नहीं, हो सकता है कि Apache/Nginx की तुलना में PHP का एक अलग (नया) कमांड लाइन संस्करण चल रहा हो।
 – 
pbond
31 मार्च 2021, 03:27

आप 7.3 . से कम के PHP संस्करण का उपयोग कर रहे हैं

में: vendor/laravel/framework/src/Illuminate/Testing/Concerns/TestDatabases.php

परिवर्तन:

    if ($url) {
        config()->set(
            "database.connections.{$default}.url",
            preg_replace('/^(.*)(\/[\w-]*)(\??.*)$/', "$1/{$database}$3", $url),
        );
    } else {
        config()->set(
            "database.connections.{$default}.database",
            $database,
        );
    }

प्रति:

    if ($url) {
        config()->set(
            "database.connections.{$default}.url",
            preg_replace('/^(.*)(\/[\w-]*)(\??.*)$/', "$1/{$database}$3", $url)
        );
    } else {
        config()->set(
            "database.connections.{$default}.database",
            $database
        );
    }

पंक्ति के अंत में अल्पविराम को हटाने से समस्या ठीक हो जाती है।

8
Mohammad b 19 फरवरी 2021, 23:20
मेरे पास मेरे स्थानीय में 7.2 संस्करण था और मैं अपने सर्वर में 7.2 सेट करना चाहता था। जब मैंने कोड बदला, तो यह काम कर गया। धन्यवाद @Mohammad
 – 
disha
28 सितंबर 2021, 10:34

अपने सेट फ़ंक्शन कॉल में अनुगामी "," को हटा दें:

config()->set(
        "database.connections.{$default}.database",
        $database
    );
5
Gert B. 29 जिंदा 2021, 11:30
1
बिल्कुल अच्छा समाधान नहीं! जिस फ़ाइल को संदर्भित किया गया है वह विक्रेता फ़ोल्डर में है। एक बार composer update निष्पादित हो जाने पर समस्या फिर से आ जाती है
 – 
Jonas Merhej
20 मार्च 2021, 20:01
सच है, मैंने उस हिस्से को याद किया कि यह एक विक्रेता फ़ाइल थी .. इसका मतलब है कि उसने --ignore-platform-reqs के साथ स्थापित किया, यह एक अच्छा विचार नहीं है ... इसलिए मैंने उस उत्तर को ऊपर उठाया जिसने कुछ समय पहले मेरी गलती पर टिप्पणी की थी।
 – 
Gert B.
22 मार्च 2021, 14:20

विक्रेता फ़ोल्डर में रखी गई फ़ाइल से "," को सीधे हटाना एक अच्छा विचार नहीं है।

समस्या को हल करने के लिए अपने php संस्करण (7.3 या उच्चतर) को अपडेट करें।

यदि आप वैलेट का उपयोग कर रहे हैं:

  • valet use php@7.3 या उच्चतर निष्पादित करें

यदि आप आवारा (और अपाचे) जैसी किसी चीज़ का उपयोग कर रहे हैं:

  • "vagrant ssh" के माध्यम से सर्वर से कनेक्ट करें
  • php7.3 या उच्चतर (sudo apt install php7.3) स्थापित करें और फिर संबंधित पैकेज जो आप चाहते हैं
  • अपने वर्तमान PHP संस्करण को "sudo a2dismod php7.2" के माध्यम से अक्षम करें (यदि आपका वर्तमान संस्करण 7.2 है)
  • php7.3 को "sudo a2enmod php7.3" के माध्यम से सक्षम करें
  • अपाचे को पुनरारंभ करें "sudo service apache2 restart"
2
Jonas Merhej 21 मार्च 2021, 12:26

phpinfo() आपको अपाचे का वह संस्करण देता है जो परियोजना का वास्तविक संस्करण है और यदि आप इसे बदलना चाहते हैं तो बस इन चरणों का पालन करें:

Php संस्करण स्थापित करें जिसे आप स्थापित करना चाहते हैं:

sudo add-apt-repository ppa:ondrej/php -y
sudo apt-get update

//replace X with the version you want
sudo apt-get install php7.X-fpm php7.X-curl php7.X-mbstring php7.X-mysql -y

अब अपना अपाचे पुनरारंभ करें:

sudo service apache2 restart

वर्तमान PHP संस्करण अक्षम करें (वह जो phpinfo() आपको देता है):

sudo a2dismod php7.2

और अब php संस्करण को सक्षम करें जिसे आपने अभी स्थापित किया है:

sudo a2enmod php7.X
2
Muhammad Mubashir 25 अप्रैल 2021, 23:13

यदि कोई इस पर उतना ही अटका हुआ है जितना मैं था, तो यहां दिए गए चरणों का पालन किया गया था। यदि आपके पास मेरे जैसी ही स्थिति है, तो आपके PHP संस्करण भिन्न हो सकते हैं। मैं 7.2 से 7.4 तक जा रहा था। मुझे करना पड़ा:

  • Homebrew के माध्यम से php के मेरे पुराने संस्करण को अनइंस्टॉल करें

brew uninstall php@7.2

  • PHP के उस पुराने संस्करण के संदर्भ को पूरी तरह से हटा दें, भले ही मैंने इसे होमब्रे के माध्यम से अनइंस्टॉल कर दिया था।

rm -rf /usr/local/Cellar/php@7.2

  • php@7.4 को छोड़कर सभी संस्करणों को अनलिंक करें। मेरे लिए वह php@7.2 और php था जिसमें कोई संस्करण विनिर्देश नहीं था।

brew unlink php

brew unlink php@7.2

0
Cole James 25 फरवरी 2021, 07:43

उबंटू लिनक्स में मेरे अनुभव के लिए, अपने PHP संस्करण की जाँच करें

php -v

आप आवश्यकता संस्करण पर स्विच कर सकते हैं, अगर आपके पास php@7.4 . नहीं है तो इंस्टॉल करें

sudo update-alternatives --set php /usr/bin/php7.4

अपनी आवश्यकताओं को करें। मेरे पास माइग्रेशन समस्या है। इसलिए

php artisan migrate

डिफ़ॉल्ट संस्करण पर वापस स्विच करें

sudo update-alternatives --set php /usr/bin/php7.2
0
WHY 17 सितंबर 2021, 07:35