পিএইচপি স্ক্রিপ্ট / টিএমপি ফোল্ডার অ্যাক্সেস করতে পারে না


16

আমার কোনও ওপেন_বেসেডির নেই, পিএইচপি / / ইত্যাদি / ইউএসআর / প্রোক / হোম ইত্যাদি অ্যাক্সেস করতে পারে ... তবে / টিএমপি নয়।

tmpfs / tmp (/ tmp টাইপ tmpfs (rw)) মাউন্ট হয় এটি যে কারণে আমি / tmp ফোল্ডারটি ব্যবহার করতে চাই।

আমার ফাইলগুলি http এর মালিক (এনগিনেক্স এবং পিএইচপি জন্য ব্যবহারকারী) এবং প্রত্যেকের দ্বারা পঠনযোগ্য।

sudo -u http cat /tmp/file কাজ করছে কিন্তু পিএইচপি স্ক্রিপ্টের ভিতরে থাকা কিছুতেই (যেমন ফাইল_এক্সিস্ট () বা ফাইল ()) নেই।

সম্পাদনা: লগতে ত্রুটি প্রদর্শন:

PHP Warning:  file(/tmp/ydlw/pid): failed to open stream: No such file or directory in /srv/http/ydlw/status.php on line 267

edit2: আমি অন্যভাবে সমস্যাটি পরীক্ষা করেছি। আমি তৈরী করেছি

touch("/tmp/boo");
file_exist("/tmp/boo");

এবং file_exist সত্য ফিরে আসে যাতে ফাইলটি তৈরি হয়। তারপরে আমি / টিএমপি-র ভিতরে দেখেছি এবং সেখানে কোনও "বু" ফাইল পাওয়া যাবে না। এটাই আমার ভয় ছিল, পিএইচপি মাউন্ট পয়েন্টটি। দেখুন »না। এটি কেন এবং আমি কীভাবে এটি ঠিক করতে পারি?


এই পিএইচপি ফাংশন দ্বারা ফিরে ত্রুটি কি? পিএইচপি ত্রুটি লগটি কি দেখায়?
টেরো কিলকেনেন

আমি ত্রুটি লগটি যুক্ত করেছি
ইফাইন

এই ফাইলটি কি /tmp/ydlw/pidবিদ্যমান /tmp? যদি তা না হয় তবে ত্রুটি বার্তার কারণ এটি।
তেরো কিলকেনেন

-rw-r - r-- 1 HTTP 343 23 জুলিল। 10:12 / টিএমপি / ইডিএলডব্লু / পিড
এফিন

আপনার লিনাক্স বিতরণ এবং পিএইচপি সংস্করণ কী এবং আপনি কোথা থেকে পিএইচপি পেয়েছেন?
মাইকেল হ্যাম্পটন

উত্তর:


31

আমি খুঁজে পেয়েছি কেন, ভাল, কেউ আমাকে বিশ্বব্যাপী ইঙ্গিত দিয়েছে।

এটি পিএইচপি বা টিএমপিএফ এর ত্রুটি নয়। অপরাধী ব্যবস্থাযুক্ত ছিল এবং তার সুরক্ষা ব্যবস্থা ছিল PrivateTmp

আমি যেমন করেছি একই ইস্যুতে যারা আসে তাদের জন্য সার্ভিস পিএইচপি (এবং সম্ভবত কিছু অন্যান্য) সিস্টেমে স্ক্রিপ্টে লিপিবদ্ধ করার PrivateTmpবিকল্প রয়েছে true( /usr/lib/systemd/system)।

/tmpসেক্ষেত্রে একটি নতুন তৈরি করা হয় এবং অন্যটি থেকে পৃথক হয়ে যায়। একবার পরিষেবা বন্ধ হয়ে গেলে ভিতরে সংরক্ষণ করা সমস্ত ডেটা মুছে ফেলা হয়।

এটি একটি সুরক্ষা পরিমাপ যেহেতু /tmpপ্রচুর সংবেদনশীল তথ্য থাকতে পারে এবং পিএইচপি স্ক্রিপ্ট সবসময় সুরক্ষিত থাকে না।

এটি নিষ্ক্রিয় করতে, কেবল স্ক্রিপ্টটি অনুলিপি করুন /etc/systemd/system(কোনও আপডেটের পরে আপনার পরিবর্তনগুলি ওভাররাইটিং এড়ানোর জন্য) এবং সেট PrivateTmpকরুন false

একই / টিএমপি ব্যবহার করে ভাগ করতে আপনি দুটি বা আরও পরিষেবা সেট করতে পারেন JoinsNamespaceOf

আরও তথ্যের জন্য> man systemd.exec


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