إعادة تهيئة متغير البيئة على مستوى النظام في لينكس

StackOverflow https://stackoverflow.com/questions/114207

سؤال

أريد فقط أن يسجل 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'
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top