I /usr/local/bin/pdftk
Apache PHP çağırdığınızda (shell_exec()
aracılığıyla, exec()
, system()
, etc.), bu beklendiği gibi ÖZET mesajı döndürür.
I /usr/local/bin/pdftk input.pdf fill_form input.fdf output output.pdf flatten
aracılığıyla çağırdığınızda shell_exec()
, hiçbir şey döndürür.
Ben kopyalayıp (apache kullanıcı olarak) kabukta aynı yolu aynı dize yapıştırın beklendiği gibi, output.pdf dosyası oluşturulur.
Bir PHP kabuk içine pdftk
komutunu Hareketli (shebang olan #!/usr/bin/php
) ve ile yürütme php script.php
mükemmel çalışıyor.
: Bu satırda sonuçları (shell_exec(script.php);
aracılığıyla) Apache PHP (stdout yönlendiriliyorsunuz onun stderr'e ile) o kabuk dosyası arayarak
sh: line 1: 32547 Segmentation fault /usr/local/bin/pdftk input.pdf fill_form input.fdf output output.pdf flatten 2>&1
Ben komut satırı (PHP aracılığıyla veya doğrudan) gelen komut dosyasını çalıştırın zaman, iyi çalışıyor. Ben Apache üzerinden PHP ile komut dosyasını çalıştırın zaman, herhangi bir bildirim olmaksızın başarısız veya yukarıda listelenen segfault verir ya.
Bu RHEL4 PHP 4.3.9 bulunuyor. Bana ateş etmeyin. Ben ini_set ile 512M bellek set () ve apache kullanıcı (fopen () ile) tüm yollara okuma / yazma ve apache olarak giriş yaparak emindim yaptık ...
Sadece gitti ve bu bulmak için / var / log / mesajları kontrol:
Oct 4 21:17:58 discovery kernel: audit(1286241478.692:1764638):
avc: denied { read } for pid=32627 comm="pdftk" name="zero"
dev=tmpfs ino=2161 scontext=root:system_r:httpd_sys_script_t
tcontext=system_u:object_r:zero_device_t tclass=chr_file
NOTE: devre dışı bırakılması SELinux sorunu "sabit". Bu bir ServerFault soru taşındı? Herkes astar burada bana 30 saniye SELinux erişim kontrolleri verebilir misiniz?