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.