ওপেন_বেসেডির সীমাবদ্ধতা কার্যকর। ফাইল (/) অনুমোদিত পাথ (গুলি) এর মধ্যে নেই:


89

আমি আমার সাইটে একটি অবতার আপলোডে এই ত্রুটিটি পাচ্ছি। আমি আগে কখনও এটি অর্জন করতে পারি নি এবং আমার এই ত্রুটি পেতে শুরু করার জন্য সম্প্রতি কিছুই পরিবর্তন করা হয়নি ...

Warning: is_writable() [function.is-writable]: 
open_basedir restriction in effect. 
File(/) is not within the allowed path(s):

19
আপনি একটি কর্মহীন উত্তর গ্রহণ করেছেন।
sjas

উত্তর:


-23

আপনার পিএইচপি কনফিগারেশনে open_basedirসেটিংস সংশোধন করুন ( রানটাইম কনফিগারেশন দেখুন )।

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

.htaccessপিএইচপি যদি লিনাক্স সিস্টেমে অ্যাপাচি মডিউল হিসাবে চালিত হয় তার মাধ্যমে উদাহরণের সেটিংস :

<DirectoryMatch "/home/sites/site81/">
    php_admin_value open_basedir "/home/sites/site81/:/tmp/:/"
</DirectoryMatch>

4
@ নিকেশ আমাকে আমার .htaccces এ ফেলে দেওয়ার পরে এবং পথগুলিকে এতে পরিবর্তন করার পরে এটি 500 টি ত্রুটি দিয়েছে /my/cutsom/dir/। কেন ভেবেছিল তা নিশ্চিত নয়।
hitautodestruct

79
একটি দুর্দান্ত উত্তরের জন্য শীতল, এখনও পর্যন্ত 12 টি আপভোট। আপনি ব্যবহার করতে পারবেন না php_admin_value.htaccessফাইলআপনি .htaccess ফাইলগুলিতে ডিরেক্টরীম্যাচ ব্যবহার করতে পারবেন না । ( open_basedirএটি কেবলমাত্র অক্ষম করা গেলে কী ধরণের সুরক্ষা ব্যবস্থা হবে ?)
এলভারো গঞ্জালেজ

4
@ আইওনোক - নীচে স্ক্রোল করুন এবং দেখুন আন্ড্রেইয়ের উত্তর দেখুন। অথবা গ্লোবাল php.ini ফাইল সম্পাদনা করুন।
vlvaro González

19
আপনি এইটিকে আপনার এইচটিএমএসের মধ্যে রাখেন না! তবে আপনার অ্যাপাচ কনফিগার ফাইলের মধ্যে রাথার।
tfont

8
ওপেন_বেসাদিরের মূল ডিরেক্টরিটি অন্তর্ভুক্ত করা সম্পূর্ণরূপে ওপেন-বেসডিরের উদ্দেশ্যকে পরাস্ত করে। এই সমাধানটি কেবল "কাজ করে" সেই অর্থে যে এটি বাধ্যতামূলকভাবে নিষেধাজ্ঞাকে অক্ষম করে।
মার্টিন 21

118

আপনার হোস্টিং অ্যাকাউন্টে ওপেন_বেসেডির সেটিংস সংশোধন করুন এবং সেগুলি কোনওটিতে সেট করা নেই। আপনার প্লেস্ক / সিপ্যানেলের 'পিএইচপি সেটিংস' এর আওতায় দেওয়া ওপেন_বেসেডির সেটিংটি সন্ধান করুন। সেখানে দেওয়া ড্রপডাউন থেকে এটি 'কোনওটিই নয়' তে সেট করুন। আমি এগুলি প্লেস্ক প্যানেলের ছবিতে দেখিয়েছি।

এখানে চিত্র বর্ণনা লিখুন এখানে চিত্র বর্ণনা লিখুন


4
@ যোগী হোস্টিং এটি করার পরে আমি ত্রুটি পেয়েছি - আপনি যে মডেলটি নির্দিষ্ট করেছেন তা সনাক্ত করতে অক্ষম: হোম_মডেল
হিমানশু ভাল্লা

4
এই পর্যন্ত দেরিতে বিট করুন, তবে সমস্ত প্লেস্ক সাইটের জন্য কি এমন কোনও উপায় আছে? সাইটগুলি যে সংস্করণগুলি ব্যবহার করছে সেটির জন্য আমি এটি বিশ্বব্যাপী php.ini তে কারও কাছে সেট করে নেই: gyazo.com/dfffbe7f9b3a20ede97da72f1ddfc777 তবে তারা এখনও ত্রুটি পেয়েছে
ম্যাট কাউলি

@ ম্যাটকোলে আপনাকে প্লেস্ক প্যানেলে হোস্ট করা প্রতিটি সাইটের জন্য এটি করতে হবে।
যোগিহোস্টিং

4
এই সমাধানের জন্য ধন্যবাদ! শেয়ার্ড হোস্টিংয়ে এটি আমার পক্ষে নিখুঁত কাজ করছে!
স্মাইলফাউন্ডার

38

এই ত্রুটিটি সমাধান করার জন্য, আপনাকে অবশ্যই httpd.conf ফাইলটি সম্পাদনা করতে হবে। এটি অ্যাপাচেহ্যান্ডলার বিভাগের নির্দেশিকা সার্ভার রুটে phpinfo এ দেখা যাওয়ার আগে উপায়। উদাহরণস্বরূপ, আমার ক্ষেত্রে এইভাবে - / etc / httpd / httpd.conf। Httpd.conf ফাইলটি খুলুন, ওপেন_বেসেডির প্যারামিটারের উল্লেখটি সন্ধান করুন। এবং এটি কারও কাছে সেট করা নেই। ( পিএইচপি_অ্যাডমিন_ভ্যালু ওপেন_বেসির কিছুই নেই )


'কিছুই না' সেট করা আমার পক্ষে কাজ করেছিল - খুব প্লেস্ক ইন্টারফেস ব্যবহার করে।
ডিজগার্স ওয়ার্ল্ড

10
আমি open_basedirআমার মধ্যে কনফিগারেশন পেয়েছি php.ini। (পিএইচপি 5 সহ রাস্পবেরি পাইতে আর্চ লিনাক্স)
ডেনিস ভ্যান ডার শ্যাচট

4
এটি আমার php.ini এও পাওয়া গেছে (এছাড়াও আর্চ)। এই উত্তরের মতো একই প্রভাব অর্জন করতে কেবল লাইনটি মন্তব্য করুন।
বেন এলগার

@ বেইলগার ঠিক এই লাইনে মন্তব্য করে কাজগুলি উল্লেখ করেছেন, আমি কেবল সেখানেই ঝুঁকি নিয়ে জিজ্ঞাসা করছি
মওয়াঙ্গাবেন

6

আপনার সাথে এই চালিয়ে থাকেন php file.php। আপনার php.ini এই ফাইলটি সন্ধান করতে হবে:

: locate php.ini
/etc/php/php.ini

এবং open_basedirসম্পত্তি সম্পর্কিত ফাইলের পথ সংযুক্ত করুন :

open_basedir = /srv/http/:/home/:/tmp/:/usr/share/pear/:/usr/share/webapps/:/etc/webapps/:/run/media/andrew/ext4/protected


এটি একমাত্র সমাধান যা সম্পূর্ণ সুরক্ষা পুরোপুরি এড়িয়ে চলার পরিবর্তে একাধিক নির্দিষ্ট পাথকে নির্দেশ করে।
mvreijn

5

আমার জন্য সমস্যাটি পুরোপুরি চলমান প্ল্লেস্ক সার্ভারের জন্য কনফিগার মানগুলি / নিখোঁজ ছিল। আমি এখানে স্রেফ নির্দেশাবলী অনুসরণ করেছি: http://davidseah.com/blog/2007/04/separate-php-error-logs-for-m Multipleple-domains-with-plesk/

আপনি প্রতিটি ভার্চুয়ালহোস্ট সংজ্ঞা জন্য পৃথক ত্রুটি লগ ফাইল রাখতে পিএইচপি কনফিগার করতে পারেন। কৌতুকটি ঠিক কীভাবে সেট আপ করবেন তা জেনে যাচ্ছেন, কারণ আপনি প্লেস্ককে না ভেঙে সরাসরি কনফিগারেশনটি স্পর্শ করতে পারবেন না। আপনার (ডিভি) প্রতিটি ডোমেন নামের / var / www / vhosts এ নিজস্ব ডিরেক্টরি রয়েছে। একটি সাধারণ ডিরেক্টরিতে নিম্নলিখিত শীর্ষ স্তরের ডিরেক্টরি থাকে:

cgi-bin/
conf/
error_docs/
httpdocs/
httpsdocs/
...and so on

আপনি নিম্নলিখিত লাইনগুলির সাথে ডোমেন ডিরেক্টরিটির কনফ / ফোল্ডারে একটি vhost.conf ফাইল তৈরি করতে চাইবেন:

php_value error_log /path/to/error_log
php_flag display_errors off
php_value error_reporting 6143
php_flag log_errors on

আপনার প্রকৃত ইনস্টলেশনটির সাথে মেলে প্রথম মানটি পরিবর্তন করুন (আমি /tmp/phperferences.log ব্যবহার করেছি)। আপনি vhost.conf ফাইল সম্পাদনা শেষ করার পরে কনসোল থেকে কনফিগারেশনটি এর মাধ্যমে পরীক্ষা করুন:

apachectl configtest
…or if you don’t have apachectl (as Plesk 8.6 doesn’t seem to)…

/etc/init.d/httpd configtest

এবং অবশেষে প্লেস্ককে বলুন যে আপনি এই পরিবর্তনটি করেছেন।

/usr/local/psa/admin/bin/websrvmng -a

2

আপনি যে পথটির কথা উল্লেখ করছেন তা অদৃশ্য এবং আপনার কর্মক্ষেত্রের ডিরেক্টরিটি রুট নয়। আপনি যে ফাইলটি অ্যাক্সেস করতে চান সে পথে একটি নিখুঁত পথ তৈরি করার চেষ্টা করুন, আপনি এখন সম্ভবত কোনও আপেক্ষিক পথ ব্যবহার করছেন ...


এটি একটি পরম পথ ব্যবহার করছে। এটি ছাড়া এটি সমস্ত ব্যবহারকারীর জন্য কাজ করে।
ওয়েবনেট

2

আপনার যদি ইস্পকনফিগ 3 এর সাথে এই ধরণের সমস্যা হয় এবং এর মতো একটি ত্রুটি পান

ওপেন_বেসেডির সীমাবদ্ধতা কার্যকর। ফাইল (/ var / www / ক্লায়েন্ট / ক্লায়েন্ট 7 / ওয়েব 15) অনুমোদিত পাথ (গুলি) এর মধ্যে নয়: .........

এটি সমাধান করার জন্য (আমার ক্ষেত্রে), কেবলমাত্র পিএসপিএইচপিপিফাই 3 এর ওয়েবসাইটের প্যানেলে এসএইচপিএইচপিতে সেট করুন

আশা করি এটি কাউকে সাহায্য করবে :)


2

আপডেট এবং / অথবা চলার পরে আমার আমার ওয়ার্ডপ্রেস সাইটগুলিতে @ আমার এই সমস্যাটি ছিল :)

ডাটাবেস টেবিল 'wp_options' 'the' আপলোড_পথ 'পরীক্ষা করে সঠিকভাবে সম্পাদনা করুন ...


আপনি কোন মূল্য সেট করেছেন? / পিএল...উত্তর / প্রজাতন্ত্র_এইচটিএমএল / ডব্লিউপি- কনটেন্ট / আপলোড?
ব্রেট

1

যদি ispconfig3 ব্যবহার করা হয়:

ওয়েবসাইট বিভাগে যান -> বিকল্পগুলি -> পিএইচপি ওপেন_বাসেডির:

এখানে চিত্র বর্ণনা লিখুন

  • এই ক্ষেত্রে অনুমোদিত পথগুলি বর্ণনা করেছে এবং প্রতিটি পথ ":" দিয়ে পৃথক করা হয়েছে

/ var / www / ক্লায়েন্ট / ক্লায়েন্ট 2 / ওয়েব 3 / চিত্র: / var / www / ক্লায়েন্ট / ক্লায়েন্ট 2 / ওয়েব 3 / ওয়েব: / ভার / www / ... এবং আরও

  • সুতরাং এখানে আপনার যে প্রবেশাধিকারটি দেখতে চান সেই পথটি অবশ্যই এখানে রাখবেন, আমার ক্ষেত্রে এটি:

/ var / www / ক্লায়েন্ট / ক্লায়েন্ট 2 / ওয়েব 3 / চিত্র:

  • সমস্যা দেখা দেয় কারণ:

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


0

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

আপনি যদি উইন্ডোজ সার্ভারটি নিজে পরিচালনা করেন এবং অ্যাক্সেস পান তবে এই প্রথম চেষ্টা করুন:

যে ফোল্ডারে আপনাকে দু: খ দিচ্ছে তাতে নেভিগেট করুন এবং এটিকে> ওপেন বৈশিষ্ট্য> সুরক্ষা রাইট ক্লিক করুন।

ব্যবহারকারীদের ফোল্ডারে কী কী অ্যাক্সেস রয়েছে, কোনটি কেবলমাত্র পড়েছেন এবং কোনটি পূর্ণ। আপনার কি এমন একটি গোষ্ঠী রয়েছে যা লিখতে বাধা দিচ্ছে?

সমাধানটি আপনার আইআইএস সেটআপের জন্য সুনির্দিষ্ট হবে, আপনি কি নির্দিষ্ট ব্যবহারকারীর আইওএসআর বা অ্যাপ্লিকেশন পুল পরিচয়ের সাথে বেনামে প্রমাণীকরণ ব্যবহার করছেন?

যে কোনও হারে, আপনি আইআইএসআর, আইআইএস_আইইউএসআরএস, বা আপনার অ্যাপ্লিকেশন পুল পরিচয়ের কোনওটির জন্য একটি নতুন পূর্ণ লেখার অনুমতি যুক্ত করতে যাচ্ছেন - যেমন আমি বলেছিলাম, এটি আপনার সেটআপের উপর নির্ভর করে পরিবর্তিত হতে চলেছে এবং আপনি কীভাবে এটি করতে চান, আপনি এই একটিতে গুগল খরগোশের গর্তটি নামাতে পারেন ( আইআইএস 8- তে এই জাতীয় একটি পোস্ট - আইআইএস_আইইউএসআরএস এবং আইইউএসআর অনুমতি ) আমার জন্য, আমি আমার অ্যাপ্লিকেশন পুলের পরিচয়টি দিয়ে অনন ব্যবহার করি যাতে আমি MACHINE_NAME\IIS_IUSRSকোনও টেম্পে সম্পূর্ণরূপে পড়তে / লিখতে পারি বা আপলোড করতে পারি ফোল্ডার

আমার open_basedir =পিএইচপি.আইএনই তে অতিরিক্ত কিছু যুক্ত করার দরকার নেই ।


0

ছাড়াও @ yogihosting এর উত্তর , যদি আপনি ব্যবহার করছেন DirectAdmin , তবে এই পদক্ষেপগুলি অনুসরণ করুন:

  1. ডাইরেক্টএডমিনের লগইন পৃষ্ঠাতে যান। সাধারণত, এর বন্দরটি 2222 হয়।
  2. প্রশাসক হিসাবে লগইন করুন। এর ব্যবহারকারীর নামটি adminডিফল্টরূপে।
  3. ডান প্যানেলে "অ্যাক্সেস লেভেল" থেকে, নিশ্চিত হয়ে নিন যে আপনি "অ্যাডমিন লেভেল" এ আছেন। যদি তা না হয় তবে এটিতে পরিবর্তন করুন।
  4. "অতিরিক্ত বৈশিষ্ট্যগুলি" বিভাগ থেকে, "কাস্টম এইচটিটিপিডি কনফিগারেশন" এ ক্লিক করুন।
  5. আপনি যে ডোমেনটি পরিবর্তন করতে চান তা চয়ন করুন।
  6. পৃষ্ঠার শীর্ষে টেক্সটরিয়ায় আপনি যে কনফিগারেশনটি পরিবর্তন করতে চান তা প্রবেশ করুন। আপনার বিদ্যমান কনফিগারেশন ফাইলটি বিবেচনা করা উচিত এবং এর ভিত্তিতে মানগুলি সংশোধন করা উচিত। উদাহরণস্বরূপ, আপনি যদি এটি দেখতে পান যে open_basedirএটি একটিতে সেট করা আছে <Directory>, সম্ভবত আপনার নিজের সম্পর্কিত সম্পর্কিত <Directory>ট্যাগটি পরিবর্তন করা উচিত :

    <Directory "/path/to/directory">
        php_admin_value open_basedir none
    </Directory>
    
  7. প্রয়োজনীয় পরিবর্তনগুলি করার পরে, "সংরক্ষণ করুন" বোতামটি ক্লিক করুন।

  8. আপনার পরিবর্তনগুলি যদি বৈধ হয় তবে আপনার এখন কনফিগারেশন ফাইলে সংরক্ষণ হওয়া দেখতে হবে।

কনফিগারেশন ফাইল সম্পাদনা করার অন্য একটি উপায় রয়েছে:

সাবধানতা : সাবধানতা অবলম্বন করুন এবং আপনার নিজের ঝুঁকিতে নিম্নলিখিত পদক্ষেপগুলি ব্যবহার করুন, কারণ আপনি ভুলত্রুটি হয়ে যেতে পারেন বা এটি ডাউনটাইম হতে পারে। প্রস্তাবিত উপায়টি পূর্ববর্তীটি, কারণ এটি আপনাকে ভুলভাবে কনফিগারেশন ফাইলটি পরিবর্তন করতে বাধা দেয় এবং ত্রুটিটি দেখায়।

  1. রুট হিসাবে আপনার সার্ভারে লগইন করুন।
  2. যাও /usr/local/directadmin/data/users। তালিকাভুক্ত ব্যবহারকারীদের থেকে, আপনি যে ডোমেনটি পরিবর্তন করতে চান সে সম্পর্কিত একটিতে যান।
  3. এখানে, একটি httpd.confফাইল আছে। এটি থেকে একটি ব্যাকআপ নিন:

    cp httpd.conf httpd.conf.back
    
  4. এখন আপনার পছন্দের সম্পাদক সহ কনফিগারেশন ফাইলটি সম্পাদনা করুন। উদাহরণস্বরূপ, বিদ্যমানটিতে সম্পাদনা open_basedirকরুন none। জিনিসগুলি সরিয়ে দেওয়ার চেষ্টা করবেন না বা আপনি ডাউনটাইম অভিজ্ঞতা পেতে পারেন। সম্পাদনা করার পরে ফাইলটি সংরক্ষণ করুন।

  5. নিম্নলিখিত উপায়গুলির একটি ব্যবহার করে অ্যাপাচি ওয়েব সার্ভারটি পুনরায় চালু করুন ( sudoপ্রয়োজনে ব্যবহার করুন ):

    httpd -k graceful
    apachectl -k graceful
    apache2 -k graceful
    
  6. যদি আপনার কোনও সমস্যা দেখা দেয় তবে ব্যাক-আপ ফাইলের সাহায্যে মূল কনফিগারেশন ফাইলটি প্রতিস্থাপন করুন এবং ওয়েব সার্ভারটি পুনরায় চালু করুন।

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

আশা করি এটা সাহায্য করবে!


0

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

আমি এই বিকল্পগুলির মধ্যে একটি হিসাবে প্রতিটি অ্যাপ্লিকেশনটির জন্য ওপেন_বাসেডির সেট করছি ।

আমাকে ইউএনসি-পাথ সহ ওপেন_বেসেডির হিসাবে একাধিক ইউআরএল সেট করা দরকার ছিল এবং এই মামলার সিনট্যাক্সটি খুঁজে পাওয়াটা বেশ কঠিন ছিল। আপনাকে সেমিকোলনগুলির সাথে পাথগুলি পৃথক করতে হবে এবং যদি আপনার প্রথম পথটি ড্রাইভলেটটার দিয়ে শুরু হয় তবে আপনাকে সেমিকোলন দিয়েও তালিকাটি শুরু করতে হতে পারে। অন্তত আমার পক্ষে এটি কাজ করে।

উদাহরণ:

php.exe -d open_basedir=;d:/www/applicationRoot;//internal.unc.path/ressource/

-3

শুধু অনুসন্ধান

ওপেন_বেসেডির =

php.ini এ এবং এটি অক্ষম করুন। এই সমস্যাটি সমাধানের এটি সহজ সমাধান।

পরিবর্তনের আগে open_basedir =

পরিবর্তনের পরে ;open_basedir =

PS - পরিবর্তনের পরে আপনার সার্ভারটি পুনরায় আরম্ভ করতে ভুলবেন না।

উপভোগ করুন;)


4
এটি করবেন না ... সুরক্ষা, বিশ্বাস করুন বা না করুন, গুরুত্বপূর্ণ। :) আপনার সরঞ্জামগুলিতে ডক্স পড়ার সময়: php.net/manual/en/ini.core.php#ini.open-baseir
অ্যাডাম লেন্ডা
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.