সুরকার চলাকালীন এক্সডিবাগ অক্ষম করা


99

চলমান অবস্থায় composer diagnose, আমি নিম্নলিখিত ত্রুটিটি পেয়েছি:

Xdebug এক্সটেনশন লোড করা হয়েছে, এটি সুরকারকে কিছুটা কমিয়ে দিতে পারে। সুরকার ব্যবহার করার সময় এটি অক্ষম করার পরামর্শ দেওয়া হয়।

আমি যখন রচয়িতা চালাচ্ছি তখনই আমি কীভাবে xdebug অক্ষম করতে পারি?

উত্তর:


81

আপডেট : ইস্যুটি সুরকার 1.3 এ স্থির করা হয়েছে । composer self-updateনিম্নলিখিত কার্যকারণ চেষ্টা করার পরিবর্তে, নির্বাহককে দ্বারা সর্বশেষ সংস্করণে সুরকারকে আপডেট করুন ।


এখানে @ ইজাট্রনের কোডটি আমার পরিবর্তন। Phpinfo আউটপুট থেকে ini ফাইলগুলি সনাক্ত করতে আমি স্ক্রিপ্টটি আপডেট করেছি।

#!/bin/sh

php_no_xdebug () {
    temporaryPath="$(mktemp -t php.XXXX).ini"

    # Using awk to ensure that files ending without newlines do not lead to configuration error
    php -i | grep "\.ini" | grep -o -e '\(/[a-z0-9._-]\+\)\+\.ini' | grep -v xdebug | xargs awk 'FNR==1{print ""}1' | grep -v xdebug > "$temporaryPath"

    php -n -c "$temporaryPath" "$@"
    rm -f "$temporaryPath"
}

php_no_xdebug /usr/local/bin/composer.phar $@
# On MacOS with composer installed using brew, comment previous line
# Install jq by executing `brew install jq` and uncomment following line.
# php_no_xdebug /usr/local/Cellar/composer/`brew info --json=v1 composer | jq -r '.[0].installed[0].version'`/libexec/composer.phar $@

4
এটি এখন পর্যন্ত সমস্যার সবচেয়ে মার্জিত সমাধান, আইএমএইচও O ধন্যবাদ জয়েস!
টমাস হানসেন

4
সেরা লিপি. এভার
ম্যাকিয়েজ পাপ্রোকি

4
উত্তরটির মূল শব্দটি (উবুন্টু 14.04 এলটিএস) পছন্দ না করায় আমাকে শেবাংয়ের bin/bashপরিবর্তে সামঞ্জস্য করতে হয়েছিল । /bin/shfunction
ashnazg

আমি আরও ভাল সামঞ্জস্যের জন্য কোডটি আপডেট করেছি এবং ফাংশন কীওয়ার্ডটি সরিয়েছি।
জয়স বাবু

4
আপনি চালিয়ে সর্বশেষতম সংস্করণটি চালিয়ে যাচ্ছেন তা নিশ্চিত করতে পারেনcomposer self-update
জয়েস বাবু

77

এই কমান্ডটি সিএলআইয়ের জন্য পিএইচপি 5 এক্সডিবাগ মডিউলটি অক্ষম করবে (এবং এইভাবে সুরকার):

sudo php5dismod -s cli xdebug

এটি থেকে xdebug.ini সিমিলিংকটি সরিয়ে দেয়/etc/php5/cli/conf.d/

এটি প্রস্তাবিত হয়েছিল http://blog.lorenzbausch.de/2015/02/10/php-disable-xdebug-for-cli/

মনে রাখবেন যে উবুন্টু 16.04 এর জন্য আপনার সম্ভবত এটি এটি চালানো দরকার:

sudo phpdismod -s cli xdebug

4
আমি দুটি উপকরণ যুক্ত করেছি alias xdebug-on='sudo php5enmod -s cli xdebug'এবং alias xdebug-off='sudo php5dismod -s cli xdebug'তাই xdebug সক্ষম xdebug-onও অক্ষম করা এখন সহজ xdebug-off
ড্যানিয়েল মকে

বহনযোগ্য নয়। সম্ভবত লিনাক্স-কেবল।
দিতি

লারাভেল হোমস্টেড বক্সে (উবুন্টু / দেবিয়ান) দুর্দান্ত কাজ করে। এটি কীভাবে কাজ করে তার একটি দীর্ঘ বিবরণ: ল্যারাকাস্টস
জাস্টিন

4
এর জন্য ধন্যবাদ :) তবে আমার ওবুন্টু 16.04 আছে এবং যদি কেউ এই মাত্র সুডো phpdismod -s cli xdebug চালাতে চান
অ্যাঞ্জেল এম

উবুন্টুতে পিএইচপি 7 কেমন হবে? আমার কি কেবলমাত্র সিমলিংকটি সরিয়ে ফেলতে হবে? /etc/php/7.0/cli/conf.d
gastonnina

40

আমি পিএইচপি কনফিগার করার বিকল্প নেই বলে আমি মনে করি না এটি লক্ষ্যযুক্ত স্ক্রিপ্ট অনুযায়ী বিভিন্ন কনফিগারেশন লোড করতে পারে। অন্তত, .ini ফাইলগুলি নকল না করে ...

যাইহোক, পিএইচপি দিয়ে সুরকার চলাকালীন আপনি এই বিকল্পগুলি যুক্ত করতে পারেন:

php -n -d extension=needed_ext.so composer.phar

-nপিএইচপি কে কোনও php.ini উপেক্ষা করতে বলবে। এটি xdebug কে এই খুব কমান্ডের জন্য লোড করা থেকে রোধ করবে।

-dবিকল্পগুলি আপনাকে চাইলে যে কোনও বিকল্প যুক্ত করতে অনুমতি দেয় (উদাহরণস্বরূপ, প্রয়োজন_সেক্সট.স্যাক্টিভেট)। আপনি একাধিক -dবিকল্প ব্যবহার করতে পারেন । অবশ্যই এটি optionচ্ছিক, আপনার এটির দরকার নেই।

তারপরে আপনি আবার একটি মিষ্টান্ন তৈরি করতে একটি নাম তৈরি করতে পারেন।

একটি সাধারণ সমাধান (কারণ সুরকারকে জসন দরকার):

php -n -d extension=json.so composer.phar

greg0ire> এর ভিত্তিতে আমার সমাধান:

#!/bin/bash
options=$(ls -1 /usr/lib64/php/modules| \

    grep --invert-match xdebug| \

    # remove problematic extensions
    egrep --invert-match 'mysql|wddx|pgsql'| \

    sed --expression 's/\(.*\)/ --define extension=\1/'| \

    # join everything together back in one big line
    tr --delete '\n'
)

# build the final command line
php --no-php-ini $options ~/bin/composer $*

alias composer=/path/to/bash/script.sh

এটি কুরুচিপূর্ণ দেখাচ্ছে (আমি চেষ্টা করেছি এবং xargs দিয়ে এটি করতে ব্যর্থ হয়েছি), কিন্তু কাজ করে ... যদিও আমাকে কিছু এক্সটেনশন অক্ষম করতে হয়েছিল, অন্যথায় আমি নিম্নলিখিত সতর্কতা পেয়েছি:

PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/mysqli.so' - /usr/lib64/php/modules/mysqli.so: undefined symbol: mysqlnd_connect in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_mysql.so' - /usr/lib64/php/modules/pdo_mysql.so: undefined symbol: pdo_parse_params in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/pdo_pgsql.so' - /usr/lib64/php/modules/pdo_pgsql.so: undefined symbol: pdo_parse_params in Unknown on line 0
PHP Warning:  PHP Startup: Unable to load dynamic library '/usr/lib64/php/modules/wddx.so' - /usr/lib64/php/modules/wddx.so: undefined symbol: php_XML_SetUserData in Unknown on line 0

আমি -nগতকাল চেষ্টা করেছি এবং একটি সমস্যা হয়েছিল কারণ আমি pharএক্সটেনশনটি অনুপস্থিত । এটি কাজ না করা পর্যন্ত আমি আরও বেশি করে এক্সটেনশন যুক্ত করার চেষ্টা করব, আমি মনে করি এটি একটি ভাল সমাধান। উপনাম অনুসারে, আমার কাছে ইতিমধ্যে কিছু জেডএস এলিয়াস রয়েছে যা আমি রক্ষণ করি না। সম্ভবত আমি বাইনারিটি ব্যাশ স্ক্রিপ্টের সাথে প্রতিস্থাপন করার চেষ্টা করব বা আমি বিকল্পটি কনফিগার করতে পারি কিনা তা দেখুন।
গ্রেগ টায়ার

এই হোয়াইটলিস্ট পদ্ধতির সমস্যাটি যদিও হ'ল শ্বেত তালিকাটি লোকেরা যা প্রয়োজন তার উপর নির্ভর করে বাড়তে পারে composer.json, উদাহরণস্বরূপ "এক্সট-এলডিএপ": "*", বা পোস্ট ইনস্টল কার্যগুলি সঠিকভাবে চালানোর জন্য প্রয়োজনীয় কিসের উপর নির্ভর করে grown … কেবলমাত্র যদি কোনও এক্সটেনশানকে কালো তালিকাভুক্ত করার কোনও উপায় থাকত ...
গ্রেগ 01 ই

4
আমি আউটপুট সঙ্গে কিছু করতে চেষ্টা করবphp -m
greg0ire

এটি আমার মনে আসে, তবে, আমি ধরে নিই যে আপনি কোনও উন্নয়নের পরিবেশে xdebug ব্যবহার করছেন। সুরকার কি এত ধীরে ধীরে দরকার যে এটির এই টুইঙ্কটি দরকার?
গুই-ডন

ওহ না, আমি এটিকে কেবল আউটপুট থেকে দেখেছি diagnoseএবং যেহেতু আমি আমার দলের জন্য বিকাশ ডকারের ধারক তৈরি করছি তাই ক্ষুদ্রতম গতির উন্নতি তাদের সকলের পক্ষে উপকৃত হতে পারে
গ্রেজ 07

14

একটি নাম তৈরি করে আপনি সেই composer xdebugত্রুটি বার্তাটি দমন করবেন ।

~/.bash_aliasesআপনার সিস্টেমে কেবল এই লাইনটি যুক্ত করুন এবং এটি নির্দোষভাবে কাজ করা উচিত।

alias composer="php -n /usr/local/bin/composer"

নতুন উপন্যাসটি composerউপলভ্য করতে শেলটি পুনরায় লোড করুন ।

source ~/.bash_profile

ব্যবহার:

$ composer --version

দ্রষ্টব্য:
আপনার অগত্যা অন্য কোনও প্যারামিটার ব্যবহার করার দরকার নেই।
আপনার সিস্টেমের উপর নির্ভর করে আপনার .bashrcপরিবর্তে এর একটি থাকতে পারে .bash_profile

হালনাগাদ:

@ আলেকজান্ডারকাকায়েভ মন্তব্যে উল্লেখ করার সাথে সাথে কিছু পরিস্থিতিতে ভ্রষ্ট হওয়া এড়াতে মেমরি_মিলিট যুক্ত করার মতো কোনও মূল্য নেই:

alias composer="php -d memory_limit=-1 -n /usr/local/bin/composer"

4
পোস্ট ইনস্টল বা পোস্ট আপডেট স্ক্রিপ্টগুলিতে কোনও এক্সটেনশনের প্রয়োজন হওয়ার সাথে সাথে এটি খুব সুন্দরভাবে খেলবে না ... যদিও সহজ প্রকল্পগুলির জন্য এটি একটি ভাল সমাধান হতে পারে।
গ্রেগ 01 ই

4
-nবিকল্প অক্ষম Pharএক্সটেনশন তাই এটি থেকে চালানোর জন্য ব্যর্থ হতে পারেcomposer.phar
brzuchal

4
এটি আমার পক্ষে কাজ করেছে। alias composer="php -d memory_limit=-1 -n /usr/local/bin/composer"
তদতিরিক্ত,

এই সমাধানটি আমার পরিস্থিতির জন্য বেশ সহজ এবং কার্যকর। @ আলেকজান্দার কাচকায়েভের মেমরি সীমাটির পরামর্শ আবশ্যক। উত্তরটি সম্পাদনা করতে ভাল হন।
হেনরি

12

আমি একটি উত্তর নিয়ে এসেছি যা ওএসএক্সের জন্য বেশ ভালভাবে কাজ করে, এবং সম্ভবত কোনও অতিরিক্ত পিএনএইচ সংস্করণে এটি রূপান্তর করা যেতে পারে যা "অতিরিক্ত আইনি ডির" এ পৃথক .ini ফাইলগুলি ব্যবহার করে এর এক্সটেনশনগুলি লোড করে:

#!/bin/sh

function php-no-xdebug {
    local temporaryPath="$(mktemp -t php-no-debug)"

    find /opt/local/etc/$1/php.ini /opt/local/var/db/$1/*.ini ! -name xdebug.ini | xargs cat > "$temporaryPath"
    php -n -c "$temporaryPath" "${@:2}"
    rm -f "$temporaryPath"
}

alias composer="php-no-xdebug php56 ~/bin/composer"

দুর্দান্ত! আমি উবুন্টু 14.04-15.10 এর উপর ভিত্তি করে একটি সাধারণ-উদ্দেশ্য স্ক্রিপ্ট তৈরি করেছি gist.github.com/perk11/816c4e64023ea26976cf
কনস্ট্যান্টিন পেরিয়াস্লোভ

কল্পনাপ্রসূত, পিএইচপি ইনস্টল করা পিএইচপি 7.1-এ ম্যাক ওএসে দুর্দান্ত কাজ করে। TY!
আন্তোনিও কার্লোস রিবেইরো

7

আমি প্রতিটি প্রকল্পে সাধারণত শেল স্ক্রিপ্ট তৈরি করি, যেহেতু প্রতিটি প্রকল্পে আরও একটি পিএইচপি সংস্করণ থাকে। এটা একটা আছে /bin/পাশে ডিরেক্টরি composer.pharএবং composer.jsonআমি যেমন এটি চালানোর ./bin/composerআমার প্রকল্প ডিরেক্টরির মধ্যে।

এটি দেখতে দেখতে (পিএইচপি 56 এর জন্য)

#!/bin/sh
DIR="$( cd "$( dirname "${BASH_SOURCE[0]}" )" && pwd )"

COMPOSER_DISABLE_XDEBUG_WARN=1 /opt/local/bin/php56 \
    -d xdebug.remote_enable=0 -d xdebug.profiler_enable=0 \
    -d xdebug.default_enable=0 $DIR/../composer.phar "$@"

-dঅপশন কার্যকরভাবে নিষ্ক্রিয় xdebug। COMPOSER_DISABLE_XDEBUG_WARN=1অংশ সাবধানবাণী সুরকার বিষয় অক্ষম করে।

Xdebug এক্সটেনশানটি অক্ষম করা পছন্দ করা হয় ( রচয়িতা সমস্যার সমাধান দেখুন ) তবে ব্যক্তিগতভাবে আমি সহজ স্ক্রিপ্টটি পছন্দ করি।

আমার মেশিনে কিছু সময়: 2 এক্সডিবাগ এবং ইনআই-সক্ষম-সহ চালানো: 1 এম 33

Xdebug দিয়ে চালান তবে ini- অক্ষম: 0 মি 19

এক্সডিবাগ ছাড়াই চালান: 0 মি 10


আমি মনে করি যেহেতু আপনি XDebug অক্ষম করছেন, আপনার প্রয়োজন নেই COMPOSER_DISABLE_XDEBUG_WARN=1: আপনি যদি কোনও সতর্কতা পান তবে এর অর্থ হ'ল আপনার স্ক্রিপ্ট কার্যকর হয় না। xdebug.remote_autostartদূরবর্তী ডিবাগিং অক্ষম করা থাকলে সংজ্ঞাটি অকেজো বলে মনে হচ্ছে।
গ্রেগ টায়ার

আপনি ঠিক সম্পর্কে xdebug.remote_autostart। স্ক্রিপ্টগুলির কার্যকারিতা সম্পর্কে: xdebug এক্সটেনশানটি লোড করা হয়েছে কিনা তা সুরকার চেক করেন না, যদি কোডটি এখানে আসলে কিছু দেখায় তবে তা নয় । "নিয়মিত" পিএইচপি স্ক্রিপ্ট কিন্তু আবার স্টার অপশন কাজ জরিমানা: আমি কাজ করেছি কোন কর্মক্ষমতা পরীক্ষা ...
জুস্ট

(অবশেষে) এই সমস্যা সমাধানের বিষয়ে সুরকার ম্যানুয়ালটিতে প্রাসঙ্গিক অংশটি খুঁজে পেয়েছে : সুরকারীর উপর xdebug প্রভাব । এটি ব্যাখ্যা করে যে আইএন ফ্ল্যাগের মাধ্যমে সমস্ত এক্সডিবাগ বিকল্পগুলি অক্ষম করা পারফরম্যান্সের সমস্যাগুলি প্রশমিত করার পক্ষে যথেষ্ট নয়। সুতরাং আমার স্ক্রিপ্ট কাজ করবে না। খুব খারাপ!
জুস্ট করুন

আমি কিছু টাইমিং করেছি (ম্যাক ওএস এক্সে) এবং আমার অবশ্যই বলতে হবে আমি আমার স্ক্রিপ্ট ব্যবহার করে পারফরম্যান্সের উন্নতিতে বেশ খুশি! Xdebug সঙ্গে অপশন সক্রিয় এটা লাগে 1m33 , বিকল্প সহ অক্ষম এটা লাগে 0m19 । Xdebug এক্সটেনশন ছাড়া এটা লাগে 0m10
জুস্ট

ঠিক আছে সুতরাং যাইহোক উন্নতি আছে। সেরা উপলব্ধ উন্নতি নয়, তবে এক বিশাল উন্নতি সত্ত্বেও (কমপক্ষে ওএস এক্সে)
গ্রেগ 01 ইয়ার

6

যদি আপনি পিএইচপিএসটারম ব্যবহার করেন তবে সর্বশেষ রিলিজ (2016.2) সিডিএল স্ক্রিপ্টগুলির অন-ডিমান্ডের জন্য এক্সডেবগ সক্ষম করার জন্য একটি বৈশিষ্ট্য নিয়ে আসে যার অর্থ আপনি কেবল আপনার বিকাশ মেশিনে বিশ্বব্যাপী এক্সডেবগটি বন্ধ করতে পারেন। আপনার প্রকল্পগুলির অভ্যন্তরে কোডের প্রয়োজন হলে আইডিই ফ্লাইতে সক্ষম করবে enable

https://blog.jetbrains.com/phpstorm/2016/06/xdebug-on-demand-for-cli-php-scriptts-in-phpstorm-2016-2-eap/

PhpStorm 2016.2 Xdebug অন ডিমান্ড মোডের সাথে পরিচয় করিয়ে দেয় যেখানে আপনি আপনার বিশ্বব্যাপী পিএইচপি ইনস্টল করার জন্য Xdebug অক্ষম করতে পারবেন, এবং PhpStorm কেবল তখনই সক্ষম করতে হবে - যখন আপনি নিজের স্ক্রিপ্টগুলি ডিবাগ করছেন বা যখন আপনার কোড কভারেজ রিপোর্টের প্রয়োজন হবে।

লিঙ্কযুক্ত নিবন্ধে বর্ণিত হিসাবে এক্সডিবেগের পথটি অন্তর্ভুক্ত করতে আপনাকে আপনার পিএইচপি ইন্টারপ্রেটারদের পছন্দগুলি সম্পাদনা করতে হবে।

আমার কাছে এটি নিখুঁত সমাধানের মতো বলে মনে হচ্ছে, কারণ আমি সাধারণত আইডিইতে থাকাকালীন কেবল এক্সডিবুগই চাই।

তবে এক্সডিবেগের অন্যান্য সম্ভাব্য ব্যবহার রয়েছে যখন আপনি "অফলাইনে" থাকুন যেমন ত্রুটিযুক্ত লগগুলিতে বর্ধিত স্ট্যাক ডাম্পগুলি, যা আপনি এটি বিশ্বব্যাপী বন্ধ করে দিয়ে হারাবেন। অবশ্যই আপনার উত্পাদনতে এক্সডিবুগ সক্ষম করা উচিত নয়, সুতরাং এটি বিকাশ-পরীক্ষার বা স্বয়ংক্রিয়-পরীক্ষার সিএলআই স্ক্রিপ্টগুলির মতো ক্ষেত্রে ব্যবহারের মধ্যে সীমাবদ্ধ থাকবে।


5

পিএইচপি মডিউল সাময়িকভাবে সক্ষম বা অক্ষম করার সাথে বিচলিত হওয়ার পরিবর্তে, যখন আপনার পিএইচপি ব্যবহার করে সমকালীন প্রক্রিয়া থাকতে পারে (উদাহরণস্বরূপ সিআই পাইপলাইনের অংশ হিসাবে), আপনি পিএইচপিকে বলতে পারেন একটি ভিন্ন মডিউল লোডিং ডিরেক্টরিতে নির্দেশ করতে।

যদিও এটি উপরে উল্লিখিত কয়েকটি সমাধানের সাথে সাদৃশ্যপূর্ণ, এটি কয়েকটি প্রান্তের মামলাগুলি সমাধান করে, যা জেনকিনস বা অন্য সিআই রানার দ্বারা ব্যবহৃত হয় যা একই মেশিনে একই সাথে পরীক্ষা চালায়।

এটি করার সহজতম উপায় হ'ল পরিবেশের পরিবর্তনশীল ব্যবহার PHP_INI_SCAN_DIR

স্ক্রিপ্ট বা বিল্ড টাস্কে এটি ব্যবহার করা সহজ:

export PHP_INI_SCAN_DIR=/etc/php.d.noxdebug php composer install

অবশ্যই আপনি প্রথমে /etc/php.d.noxdebug প্রস্তুত করতে চান, এমন কিছু করে:

mkdir /etc/php.d.noxdebug cp /etc/php.d/* /etc/php.d.noxdebug rm /etc/php.d.noxdebug/xdebug.ini

এর অর্থ আপনার কাছে পুরানো পিএইচপি পরিবেশের মতো পরিবেশ রয়েছে, কেবলমাত্র একটি মডিউল অনুপস্থিত। এর অর্থ পিএইচপি-এন সমাধানের সাথে আপনারা পিএআর / জসন মডিউলগুলি লোড করার প্রয়োজনের বিষয়ে চিন্তা করার দরকার নেই।


আমি কেবল ইনআই ফাইলগুলি অনুলিপি করার পরিবর্তে সিমলিংক ব্যবহার করব।
গ্রেগ 01 ই

4
আমি সিমলিংকগুলি ব্যবহার করা থেকে দূরে সরে গেলাম কারণ এটি ফোল্ডারগুলি সিঙ্কে রয়েছে এমন ধারণা দেয়, যখন নতুন মডিউলগুলি স্বয়ংক্রিয়ভাবে 'নক্সদেবগ' ফোল্ডারে অন্তর্ভুক্ত হবে না।
কেহব্বিটস

4

আমি উইন্ডোজ-ভিত্তিক রচয়িতা ইনস্টলারটির জন্য একটি সমাধান নিয়ে এসেছি - এটি যে কোনও রচয়িতা ইনস্টলেশনের জন্য কাজ করা উচিত, এটি মূলত লোড হওয়া INI ফাইলের একটি অনুলিপি তৈরি করে এবং xdebug জেনড এক্সটেনশন সম্পর্কে মন্তব্য করে, তারপরে কনফিগারেশন ফাইলটি লোড করে যখন এটি সুরকার চালিত হয় ।

তারা এই পরিবর্তনটি সংহত করতে চায় কিনা তা দেখার জন্য আমি একটি সমস্যা খুলেছি:

https://github.com/composer/windows-setup/issues/58

আপনি আমার নির্দেশাবলী এবং কোডটি সেখানে সন্ধান করতে পারেন।


সহজ এবং কার্যকর :) স্ব-আপডেটের মাধ্যমে সুরকার আপডেট করার পরে কি আপনাকে আবার এটি প্রয়োগ করতে হবে?
marcovtwout

4

জয়েসের উত্তরে উল্লিখিত হিসাবে , এই সমস্যাটি সুরকারের সর্বশেষ সংস্করণে আর বিদ্যমান নেই।

রচয়িতা ডকুমেন্টেশন আপডেট করা হয়েছে এই নোট । এটি বিশদভাবে কীভাবে আপনি সুরকারের সাথে xdebug সক্ষম করতে পারেন (যদি প্রয়োজন হয়)।

আপনি স্ব-আপডেট ব্যবহার করে আপনার সুরকারের সংস্করণ আপডেট করতে পারেন ।

আমার ম্যাকে আমাকে করতে হয়েছিল: sudo php /opt/local/bin/composer self-update

একটি হোমব্রাব্য পিএইচপি ইনস্টল প্রসঙ্গে এই সম্পর্কে আরও বিশদটি এই সমস্যাটিতে পাওয়া যাবে ।


দারুণ! আপনি কি জানেন যে এই পরিবর্তনটির জনসংযোগ কোথায়? আমার এটির আর একটি সিএলআই অ্যাপ্লিকেশনে দরকার
টম ভোটারুবা

3

পিএইচপি কনফিগারেশনের সরাসরি কারসাজি

এখানে ম্যাক ওএস এক্স-এ হোমব্রিউ- ইনস্টল করা পিএইচপি ইনস্টলেশন ভিত্তিক আমার অবদান' s

এটি একটি শেল-স্ক্রিপ্টের মোড়ক, /usr/local/bin/composerএখানে রচয়িতা বাইনারি সহ একটি এক্সিকিউটেবল ফাইল হিসাবে সংরক্ষণ করার জন্য ডিজাইন করা হয়েছে /usr/local/bin/composer.phar:

#!/bin/sh
sed -i '' -e 's:zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":;zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":' /usr/local/etc/php/5.5/conf.d/ext-xdebug.ini
/usr/local/bin/php /usr/local/bin/composer.phar "$@"
sed -i '' -e 's:;zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":zend_extension="/usr/local/opt/php55-xdebug/xdebug.so":' /usr/local/etc/php/5.5/conf.d/ext-xdebug.ini

কার্যপ্রণালীর তত্ত্ব

মোড়ক লিপি:

  • ব্যবহারসমূহ sed , অস্থায়ীভাবে কনফিগারেশন ফাইল পরিবর্তন করতে Xdebug নিষ্ক্রিয় (লাইন 2)
  • কমান্ডে আর্গুমেন্টগুলি দিয়ে পাস করে সুরকারকে কার্যকর করে (লাইন 3)
  • কনফিগারেশন ফাইলটি পুনরুদ্ধার করতে সেড ব্যবহার করে এক্সডিবাগকে পুনরায় সক্ষম করুন (লাইন 4)

স্ক্রিপ্টটি পিএইচপি 5.5 এর একটি ওএস এক্স / হোমব্রু ইনস্টল করে। পাথগুলি অন্যান্য পিএইচপি সংস্করণ এবং অন্যান্য অপারেটিং সিস্টেমগুলি এবং প্যাকেজ পরিচালকদের ডিরেক্টরি বিন্যাসের সাথে কাজ করার জন্য সামঞ্জস্য করা উচিত। আরও লক্ষ করুন যে সেডের কয়েকটি সংস্করণ -iঅপশনটি অনুসরণ করে খালি স্ট্রিং আর্গুমেন্টের প্রয়োজন নেই ।

ক্যাভেট ইউটিলিটার

স্ক্রিপ্ট, সহজবোধ্য মধ্যে এটি প্রধান পিএইচপি কনফিগারেশন ফাইল সরাসরি কাজ করে, তবে এটিও একটি অপূর্ণতা আছে: Xdebug যে কোনো স্ক্রিপ্ট এই স্ক্রিপ্টের সাথে একই সময়ে কার্যকর করা ঘটতে জন্য অক্ষম করা।

আমার বিকাশের পরিবেশে, এটি রচয়িতা হ'ল ম্যানুয়ালি এবং কেবল কখনও কখনও মৃত্যুদন্ড কার্যকর করা হয়; তবে আপনি যদি স্বয়ংক্রিয়ভাবে স্থাপন প্রক্রিয়াটির অংশ হিসাবে সুরকারকে কার্যকর করতে পারেন তবে আপনি এই কৌশলটি ব্যবহার করতে চাইবেন না।


আমি নিশ্চিত নই যে এটি সুরকার দ্বারা ত্রুটিগুলি কীভাবে পরিচালনা করা যায় তার একটি তাত্পর্য তৈরি করবে you আপনার একটি নির্দিষ্ট উদাহরণ বা উদ্বেগ আছে কি? স্ক্রিপ্টটি সমস্যার দ্রুত সমাধান হিসাবে উদ্দিষ্ট এবং পুরোপুরি যুদ্ধ-পরীক্ষা করা হয়নি। এটি বলার পরে, আমি এটি ব্যবহার করার সময় এটি কোনও সমস্যা ছাড়াই কাজ করেছে।
j13k

4
আমার উদ্বেগ হ'ল স্ক্রিপ্টের শেষ লাইনটি চালিত নাও হতে পারে।
গ্রেগ টায়ার

2

বেশিরভাগ ক্ষেত্রে আপনার সিএলআই মোডে এক্সডিবেগ লাগবে না। আপনি যদি ক্লাই এবং সিজি আলাদাভাবে কনফিগার করতে পারেন তবে এটি যদি আপনার পক্ষে গ্রহণযোগ্য হয়।

সুতরাং আপনি যদি ক্লাইপ এবং সিগি আলাদাভাবে কনফিগার করতে পারেন তার চেয়ে php.ini ফাইলটি প্রস্থান করার কাছাকাছি যদি php-cli.ini এবং কনফারেন্স-ক্লি.ডি করেন (সিগির জন্য এটি php.ini এবং conf.d হবে )। শুধু xdebug.ini কনফারেন্স-ক্লিমেডে রাখবেন না।


2

আপনি যদি ওএস এক্স-এ ব্রাউ ব্যবহার করে সুরকার ইনস্টল করেন আপনি এই উপনামটি ব্যবহার করতে পারেন:

alias composer="php -n $(cat $(which composer) | grep composer.phar | awk '{print $7}')"

1

পিএইচপি-র একাধিক সংস্করণ সহ একটি ম্যাকপোর্টগুলি ইনস্টলেশনের জন্য আমার দ্রুত সমাধানটি হ'ল সুরকারের জন্য এই সাধারণ শেল র‌্যাপারটি লিখতে:

/user/local/bin/composer-nodebug.sh

#!/bin/bash

sudo mv /opt/local/var/db/php53/xdebug.ini /opt/local/var/db/php53/xdebug.NOT
sudo mv /opt/local/var/db/php54/xdebug.ini /opt/local/var/db/php54/xdebug.NOT
sudo mv /opt/local/var/db/php55/xdebug.ini /opt/local/var/db/php55/xdebug.NOT
composer $1 $2 $3 $4 $5 $6 $7
sudo mv /opt/local/var/db/php53/xdebug.NOT /opt/local/var/db/php53/xdebug.ini
sudo mv /opt/local/var/db/php54/xdebug.NOT /opt/local/var/db/php54/xdebug.ini
sudo mv /opt/local/var/db/php55/xdebug.NOT /opt/local/var/db/php55/xdebug.ini

তারপরে যে কোনও রচয়িতা কমান্ড চালান:

sudo composer-nodebug.sh update

ত্রুটিগুলি:

  • সুডোর প্রয়োজন (যদি আপনি INI ফাইলগুলি chmod না করেন)
  • যদি আপনি মাঝপথে এটি হত্যা করেন তবে INI ফাইলগুলি সংশোধন করা হবে
  • ভবিষ্যতের পিএইচপি সংস্করণ যুক্ত করা প্রয়োজন।
  • এটি চলমান থাকাকালীন অন্যান্য পিএইচপি প্রক্রিয়াগুলি প্রভাবিত হয়

মার্জিত নয়, সহজ।


আমি মনে করি এর পরিবর্তে আপনি শর্টকাট ব্যবহার করতে পারেন $1…$7… সম্ভবত এটি $@বা এর মতো কিছু, আপনাকে দেখতে হবে।
গ্রেগ টায়ার

> আপনি যদি মাঝপথে এটি হত্যা করেন তবে আইএনআই ফাইলগুলি সংশোধন করা হয়েছে আপনি কিল সংকেতটি আটকে রেখে ঠিক করুন> ভবিষ্যতে পিএইচপি সংস্করণ যুক্ত করতে হবে। আপনি এটিকে একটি সাধারণ লুপ দিয়েও ঠিক করতে পারেন
গ্রেগ 01 ই

1

এক্সডিবাগটি অক্ষম করতে এবং মেমরির ত্রুটিগুলি রোধ করতে সুরকারের জন্য একটি উপাধি তৈরি করা:

এই লাইনটি আপনার ~ / .Bash_ প্রোফাইলে যুক্ত করুন

alias composer='php -d xdebug.profiler_enable=0 -d memory_limit=-1 /usr/local/bin/composer'

নতুন উপনাম উপলভ্য করতে টার্মিনালটি পুনরায় চালু করুন।


0

(উইন্ডোজ)

ডকুমেন্টেশনের ভিত্তিতে আমি এনভায়রনমেন্ট ভেরিয়েবল ব্যবহার করি PHPRC, সুতরাং কোন আইএনআই ফাইলটি স্লাউড লোড হবে তা আমি বেছে নিতে পারি, সুতরাং আমি কমান্ড (লাইক composer install) চালানোর আগে এক্সডিবেগকে সক্ষম বা অক্ষম করতে চাই কিনা তা বেছে নিতে পারি ।

আমার দুটি আইএনআই ফাইল রয়েছে, একটিতে এক্সডিবাগ সক্ষম ( php-xdebug.ini) এবং একটি এক্সডেবগ অক্ষম ( php.ini- এটিও ডিফল্ট একটি)।

আমি কয়েকটি ব্যাচ ব্যবহার করি (এমন স্থানে স্থাপন করা হয় যা PATHপরিবেশে পরিবর্তনশীল অন্তর্ভুক্ত থাকে , তাই এটি যে কোনও জায়গা থেকে কার্যকর করা যেতে পারে):

এক্সডিবাগ সক্ষম করতে আমি কল করি xon.bat:

@ECHO OFF
set PHPRC=C:/path-to-php/php-xdebug.ini

এক্সডিবাগটি অক্ষম করতে আমি কল করি xoff.bat:

@ECHO OFF
set PHPRC=

কল করে php --iniআমি পরীক্ষা করতে পারি কোন আইএনআই ফাইল লোড হয়েছিল।

বিকল্পভাবে আপনি পরিবেশ পরিবর্তনশীল ব্যবহার করতে পারেন PHP_INI_SCAN_DIRযেখানে আপনি ডিরেক্টরিতে একটি পথ নির্ধারণ করেছেন যেখানে থেকে অতিরিক্ত আইএনআই ফাইল লোড হবে। সুবিধা হ'ল আপনি একাধিক INI ফাইল লোড করতে পারেন।


আপনি কী ভাবছেন যে এটি একটি সমস্যা? বছরের পর বছর থেকে, এ সম্পর্কে ডকুমেন্টেশন রয়েছে: "এক্সডিবাগ এক্সটেনশান সক্ষম করা থাকলে কর্মক্ষমতা উন্নত করতে, সুরকার স্বয়ংক্রিয়ভাবে এটি পিএইচপি পুনরায় চালু করে" " (উত্স: getcomposer.org/doc/articles/… )
নিকো

হ্যাঁ, আমি পড়েছি যে সুরকার এবং এক্সডিবাগের সাথে ইস্যুটি ইতিমধ্যে সমাধান করা উচিত, তবে আমার ক্ষেত্রে আমি যা দেখছি তা স্পষ্ট। composer installএক্সডিবাগ সক্ষম থাকা চিরকালের জন্য নেয়, অন্যদিকে xdebug অক্ষম সহ একই কমান্ডটি ভাল কাজ করে (আমার সর্বশেষ সুরকার আছে) have আমি খেলতে চেষ্টা করেছি COMPOSER_ALLOW_XDEBUGকিন্তু কোন ফল হয়নি। সম্ভবত আমি কারণটি সমাধান করছি না (অবশ্যই যদি আমি কারণটি সম্পর্কে অবশ্যই জানতাম তবে আমি অবশ্যই এটিতে মনোনিবেশ করব) তবে সুবিধাটি রয়েছে এবং আমি বিশ্বাস করি এটি কারওর পক্ষে সহায়তা করতে পারে।
হিজদাভ

-3

পিএইচপি 5-ক্লাইপ সংস্করণে এক্সডিবাগ সতর্কতা থেকে মুক্তি পাওয়ার জন্য এখানে আমার দ্রুত সমাধান। আমি উবুন্টু 14.04-এ পিএইচপি 5-ক্লাইমের জন্য এক্সডিবুগের সমর্থন সরিয়েছি।

সিডি /etc/php5/cli/conf.d/

sudo আরএম 20-xdebug.ini

এখন পিএইচপি 5-ক্লিমে এক্সডিবেগের আর সতর্কতা নেই।


4
sudo phpdismod xdebugআঘাত হানতে পছন্দসই পদ্ধতি হবেrm
জেফ পেকেট
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.