إعادة تهيئة متغير البيئة على مستوى النظام في لينكس
-
02-07-2019 - |
سؤال
أريد فقط أن يسجل Apache الخاص بي بعضًا من بيئتي المحددة مسبقًا حتى أتمكن من استعادتها باستخدام وظيفة getenv في php.كيف يمكنني أن أفعل هذا؟لقد حاولت إضافة /etc/profile.d/foo.sh مع تصدير FOO=/bar/baz باستخدام الجذر وإعادة تشغيل Apache.
المحلول
يتم توريث متغيرات البيئة من خلال العمليات في Unix.يتم تنفيذ الملفات الموجودة في /etc/profile.d فقط (في الصدفة الحالية، وليس في غلاف فرعي) عند تسجيل الدخول.مجرد تغيير القيمة هناك ثم إعادة تشغيل العملية لن يؤدي إلى تحديث البيئة.
الإصلاحات المحتملة:
- قم بتسجيل الخروج/تسجيل الدخول، ثم ابدأ تشغيل Apache
- مصدر الملف:
# . /etc/profile.d/foo.sh
, ، ثم أعد تشغيل الأباتشي - مصدر الملف في البرنامج النصي apache init
تحتاج أيضًا إلى التأكد من ذلك /etc/profile.d/
يتم الحصول عليه عند بدء تشغيل Apache init
بدلا من نفسك.
قد يعتمد الحل الأفضل أيضًا على التوزيعة التي تستخدمها، لأنها تستخدم أنظمة مختلفة للتكوين.
نصائح أخرى
يمكنك استخدام SetEnv في ملفات التكوين الخاصة بك (/etc/httpd/conf.d/*.conf، .htaccess ...).بالإضافة إلى ذلك، يجب أن تكون قادرًا على تعريفها في /etc/sysconfig/httpd (على التوزيعات المستندة إلى RPM) و يصدّر لهم (ملاحظة:لم تختبر).
ملحوظة:لن أتفاجأ إذا حاولت بعض التوزيعات جاهدة إخفاء أكبر قدر ممكن، فيما يتعلق بتكوين النظام، من خدمة يمكن الوصول إليها بشكل عام مثل Apache.وإذا لم يفعلوا ذلك، فقد يبدأون في القيام بذلك في إصدار مستقبلي.ولذلك أنصحك أن تفعل ذلك صراحة.إذا كنت بحاجة إلى مشاركة مثل هذا الإعداد بين Apache والأصداف الخاصة بك، فيمكنك تجربة تحديد المصادر /etc/profile.d/yourprofile.sh من /etc/sysconfig/httpd
تسمح لك ملفات تكوين Apache بتعيين متغيرات البيئة على أساس كل موقع.
لذلك، إذا كان خادم الويب الخاص بك يقدم صفحات من موقعين منطقيين، فيمكنك تعيين نفس متغير البيئة بشكل مختلف لكل موقع، وبالتالي جعل PHP الخاص بك يتفاعل بشكل مختلف.
انظر أباتشي mod_env للتفاصيل:
إذا كنت بحاجة إلى env vars لـ Apache فقط، فإن ما نجح بالنسبة لي هو تحرير ملف /etc/apache2/envvars
وإعادة تشغيل أباتشي.أضفت هذه الإعدادات:
export LANG='en_US.UTF-8'
export LC_ALL='en_US.UTF-8'