কীভাবে আপনি PATHঅ্যাপাচি 2 এর জন্য পরিবেশের পরিবর্তনশীল সেট করতে পারেন ? আমি এটিকে /usr/sbin/envvarsএবং httpd.conf এ SetEnv PATH(এবং PassEnv সহ এসএসআই-এর সাথে প্রেরণে) সেট করার চেষ্টা করেছি , তবে এটি কেবল বহন করে না।
কীভাবে আপনি PATHঅ্যাপাচি 2 এর জন্য পরিবেশের পরিবর্তনশীল সেট করতে পারেন ? আমি এটিকে /usr/sbin/envvarsএবং httpd.conf এ SetEnv PATH(এবং PassEnv সহ এসএসআই-এর সাথে প্রেরণে) সেট করার চেষ্টা করেছি , তবে এটি কেবল বহন করে না।
উত্তর:
অন্যরা যেমন বলেছে, আপনি পরিবেশের পরিবর্তনশীল ফাইলটি ব্যবহারের মাধ্যমে এটি করেন। আমি এই উত্তরে আরও বিশদ সরবরাহ করব, এবং প্রমাণ করে যে এটি কার্যকর works
এই পরিবেশের পরিবর্তনশীল ফাইলটি অবশ্যই উত্স হতে হবে apachectl। আমার উবুন্টু বাক্সে, এই ফাইলটি রয়েছে /etc/apache2/envvars। রেডহ্যাটে, এটি এখানে /etc/sysconfig/httpd। ফ্রিবিএসডি-তে, এটি সেট করা আছে /etc/rc.conf(আমার মনে হয়)। বিকল্প হিসাবে, আপনি একটি স্টার্টআপ স্ক্রিপ্ট ( /etc/init.d/httpdবা apachectl, ইত্যাদি) এ এই তথ্য সেট করতে পারেন । তবে আমি মনে করি যদি সম্ভব হয় তবে স্টার্টআপ স্ক্রিপ্টগুলি একা রেখে দেওয়া ভাল। মনোনীত পরিবেশের ভেরিয়েবল স্ক্রিপ্টে সেরা স্থান।
এই এনভর্স ফাইলের অবস্থান যাচাই করুন। উবুন্টুতে, /etc/init.d/apache2ctlএটি উত্স দেখায় /etc/apache2/envvars:
# the path to the environment variable file
test -z "$APACHE_ENVVARS" && APACHE_ENVVARS='/etc/apache2/envvars'
# pick up any necessary environment variables
if test -f $APACHE_ENVVARS; then
. $APACHE_ENVVARS
fi
ভেরিয়েবলগুলি দেখতে, আমি পার্ল প্রিন্টিনেভি.সি.পি স্ক্রিপ্ট ব্যবহার করছি এবং এটি http://example.org/cgi-bin/printenv.cgi এ উপলব্ধ করে তুলেছি । স্ক্রিপ্টটি আমাকে নীচের পাঠ্য দেখায়:
PATH = /usr/local/bin:/usr/bin:/bin
এই ভেরিয়েবলগুলি পরিবর্তন করতে, আমি এনভের্স ফাইলটি সম্পাদনা করি:
$ sudo vim /etc/apache2/envvars
এই ফাইলটিতে আপনার PATH পরিবর্তন করুন। এই উদাহরণে, আমি /opt/local/binআমার পথের সাথে যুক্ত করব। কিছু ক্ষেত্রে, আপনার ব্যবহারের প্রয়োজন হতে পারে export PATHকেবল না PATH:
export PATH=$PATH:/opt/local/bin
অ্যাপাচি পুনরায় চালু করুন
$ sudo service apache2 restart
* Restarting web server apache2
... waiting ...done.
$
Http://example.org/cgi-bin/printenv.cgi এ ফলাফল দেখুন , যা এখন দেখায় যে PATH এ এখন একটি নতুন উপাদান রয়েছে:
PATH = /usr/local/bin:/usr/bin:/bin:/opt/local/bin
যদি উপরের কাজ না করে তবে অস্বাভাবিক কিছু ঘটতে পারে। সম্ভবত আপনার স্ক্রিপ্টটি PATH কে অগ্রাহ্য করছে বা ওভাররাইট করছে।
gracefulএবং এর ফলে পরিবর্তনগুলি কার্যকর হয় নি।
২.২-এ, PATH এনভায়রনমেন্ট ভেরিয়েবলটি Setenv ব্যবহার করে সেট করা যাবে না।
আমার সিস্টেমে এটি /etc/apache2/envvars।
PATH
আপনি এটিকে start()init স্ক্রিপ্টের ফাংশনে সেট করতে পারেন, এরকম কিছু:
start() {
echo -n $"Starting $prog: "
check13 || exit 1
export PATH=${PATH}:/var/ossec/bin
LANG=$HTTPD_LANG daemon --pidfile=${pidfile} $httpd $OPTIONS
RETVAL=$?
echo
[ $RETVAL = 0 ] && touch ${lockfile}
return $RETVAL
}
সমস্ত পরিবেশের ভেরিয়েবল তালিকাভুক্ত করতে পার্ল স্ক্রিপ্ট তৈরি করুন:
#!/usr/bin/perl -wT
print "Content-type: text/html\n\n";
foreach $key (sort keys(%ENV)) {
print "$key = $ENV{$key}<p>";
}
এটিকে রাখুন /var/www/cgi-binএবং পরীক্ষা করুন http://domain.com/cgi-bin/env.cgi, আপনি নীচের অংশগুলি দেখতে পাবেন:
PATH = /sbin:/usr/sbin:/bin:/usr/bin:/var/ossec/bin
--prefix=/usr --enable-layout=RedHatঅ্যাডভেসার ফাইলের সাথে উত্স থেকে সংকলিত অ্যাপাচি ২.৪.x রেডহ্যাটে অবস্থিত /usr/sbin/envvars। আমি নিশ্চিত করতে পারি যে সেই ফাইলটিতে উপযুক্ত প্যাথএইচটি সেট করা এটিকে তাই আপাচি এবং পিএইচপি সম্পর্কে সচেতন করে তোলে।
আমি এটি নির্ধারণের জন্য স্টেফান লাসিউস্কির মতো একই পদ্ধতির ব্যবহার করেছি। জন্য অ্যাপাচি 2.4.12 , /usr/sbin/envvarsফাইলের লাইন 49 উপর sourced হয় /usr/sbin/apachectl।
/usr/sbin/apachectlতে /etc/sysconfig/httpdপরিবর্তে উল্লেখ করুন, এতে রয়েছে: file এই ফাইলটি আর httpd প্রক্রিয়ার জন্য অতিরিক্ত পরিবেশের ভেরিয়েবল কনফিগার করতে ব্যবহৃত হয় না। এটি সিস্টেমড দ্বারা প্রতিস্থাপন করা হয়েছে » পেস্ট.ডেবিয়ান.net
আপনি যা চান সম্পাদক (উদাহরণস্বরূপ ভিআইএম ব্যবহার করে) দিয়ে অ্যাপাচি 2 প্লাস্ট ফাইলটি সম্পাদনা করুন:
$ sudo vim /System/Library/LaunchDaemons/org.apache.httpd.plist
প্লাস্ট ফাইলটিতে নিম্নলিখিতটি যুক্ত করুন:
<key>EnvironmentVariables</key>
<dict>
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
</dict>
তাহলে EnvironmentVariablesকী আগে থেকেই আছে, শুধু যোগ
<key>PATH</key>
<string>/usr/bin:/bin:/usr/sbin:/sbin:/usr/local/bin</string>
যাও <dict>
এনবি: ম্যাক ওএসএক্স 10.11 (ইএল ক্যাপিটান) বা ততোধিকের জন্য, আপনাকে csrutil disableরিবুট এবং সিএমডি + আর টিপানোর পরে টার্মিনালে কমান্ড চালানো দরকার এবং তারপরে আপনি এই ফাইলটি সম্পাদনা করতে সক্ষম হবেন।
অ্যাপাচি 2 পুনরায় চালু করুন
$ sudo /usr/sbin/apachectl stop
$ sudo /usr/sbin/apachectl start
আমার অ্যাপাচি 2 সিস্টেমে আমি দেখতে পেয়েছি যে প্রচুর দর্শক কেবলমাত্র আমার স্মাইলস / ইমোটিকনগুলি (গম্ভীরভাবে!) সাবধানতার সাথে সংকলিত সংগ্রহকে স্তম্ভিত করতে চেয়েছিলেন, তাই আমি সিদ্ধান্ত নিয়েছিলাম যে ডিরেক্টরি পথটিতে এলোমেলোভাবে উত্পন্ন সিমলিংকটি ব্যবহার করা হবে যা একটি হিসাবে বেছে নেওয়া হবে অ্যাপাচি 2 পরিবর্তনশীল, এবং লিঙ্কগুলি ভাগ করা কার্যত অসম্ভব।
সুতরাং, প্রতি 30 মিনিটের পরে ক্রোন একটি পার্ল স্ক্রিপ্ট চালিয়েছিল যা .htaccess ফাইলটিকে আবার লিখতে পারে এবং সেটেটভ অন্তর্ভুক্ত করতে পারে যা আপনি নীচের সাথে দেখতে পারেন:
....
SetEnv SMILEYDIR "QyQGTZ8cgcK3zMVL0aNJ"
তারপরে, আমার পিএইচপি পৃষ্ঠাগুলির শীর্ষে আমি ভেরিয়েবলটি এর মতোই পড়তে পারি এবং পরবর্তী পৃষ্ঠায় সেখানে সেই পরিবর্তনকটি যথাযথ স্মাইলির পথ তৈরি করতে ব্যবহৃত হত:
$SMILEYDIR = apache_getenv("SMILEYDIR");
....
....
echo '<img src="/'.$SMILEYDIR.'//SMILEY_yay!.gif" border="0" hspace="3">';
আমার জন্য কাজ করে, এবং আশা করি এটি আপনাকে সহায়তা করবে!
PATH