Apache sunucusu altında çağrılan Python uygulaması, komut satırından çalıştırılanla aynı değil


0

Bu yüzden RHEL6'da Apache altında dokuwiki kullanıyorum ve bir php betiğinde proc_open adında bir eklenti üzerinde çalışıyorum. Benim sorunum yerel olarak apache (under ~/.local/bin) için kurulmuş bir uygulamayı çağırmaya çalışıyorum , ancak php'den çağrılan program farklı bir uygulama. Bu muhtemelen şu şekilde anlaşılıyor:

Kullanıcı olarak giriş yaptığımda apache:

$ sudo su - user

Ve uygulama sürümümü kontrol ediyorum:

$ /var/www/.local/bin/rst2html.py --version

Alırım:

rst2html.py (Docutils 0.12 [release], Python 2.6.6, on linux2)

Ancak, apache altında çalışan php uygulamamda (proc_open ile) aynı çağrıyı yaptığımda şunu alıyorum:

rst2html.py (Docutils 0.6 [release], Python 2.6.6, on linux2)

Genel olarak kurulu olan sürüm, yani tüm kullanıcılar tarafından kullanılabilir.

Peki bu farklılığa neden olan şey, çevrede kurmam gereken bir şey var mı?

Not: python uygulaması kullanılarak kuruldu. pip


Kök olarak bir şeyi açtığını nasıl test ediyorsunuz?
— Zoredache

@Zoredache proc_open çağrısını değiştirdim, bunun yerine echo \$USER'root' döndürdüm.
— ayak parmakları

1
Bunun geçerli bir test olduğundan emin değilim. Bu değişken kabuktan gelmiyor olabilir. Ayrıca, ben apache etkili kullanıcı koyar düşünüyorum APACHE_RUN_USER, değil USER. Bir dosya oluşturursanız, dosyanın sahibi kimdir? Ya idda ya whoamigeçitinizde ya da geçidinizde? Apache kullanarak bahsettiniz, ama hangi yöntem? Modül veya fcgi, cgi veya başka bir şey?
— Zoredache

Yankı yerine id, etkili kullanıcıyı göstermek için kullanmayı deneyin .
— BillThor

@Zoredache Ah, KULLANICI'nin mutlaka geçerli olmadığını bilmiyordum. Aslında, koşmayı denediğimde whomaidoğru apachekullanıcıyı alıyorum . Sanırım bu sorumu değiştiriyor. Güncelleyeceğim.
— ayak parmakları

Yanıtlar:


0

Seslerden, web üzerinden çalıştırmıyorsunuz, komut satırından çalıştırıyorsunuz - bu durumda, komut dosyası çalışan kullanıcı olarak çalışacaktır (aslında, burada apache içermez) - Böylece çalıştırdığınızda root iseniz, root olarak çalışacaktır.

Komut dosyasını apache olarak çalıştırmak istiyorsanız, "/ path / to / script" sudo -u apache gibi bir şey deneyin.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.