Adını boru kullanıcı kimse ile engelleme

1 Cevap php

Ben 2 kısa komut dosyaları var. İlk, awk komut, bir adlandırılmış yöneltme 'myfifo.dat' büyük bir dosya ve baskılar işler. İkinci, bir Perl script, bir LOAD DATA LOCAL INFILE 'myfifo.dat'... komutu çalıştırır. Böylece gibi yerel çalıştırdığınızda bu komut her ikisi de çalışabilir:

lee.awk big.file &
lee.pl

Ancak, ben bir PHP web sayfası, adlandırılmış kanal blokları bu komut çağırdığınızda:

$awk="/path/to/lee.awk {$_FILES['uploadfile']['tmp_name']} &";
$sql="/path/to/lee.pl";

if(!exec($awk,$return,$err)) throw new ZException(print_r($err,true)); //blocks here
if(!exec($sql,$return,$err)) throw new ZException(print_r($err,true));

Ben yazdıkları böylece awk ve Perl komut dosyalarını değiştirmek ve normal bir dosyaya okursanız, her şey PHP çalışıyor. Fifo ve normal dosya üzerindeki izinleri (deneme amaçlı) 666 bulunmaktadır. Bu işlemler bir adlandırılmış kanal üzerinden çok daha hızlı koşmak, bu yüzden birini kullanmayı tercih ediyorum. Herhangi bir fikir nasıl engelini kaldırmak için?

ps. Ben tüm bu şiddetlenmesine yüzden gidiyorum durumda görmek, merak ediyorsanız this SO question.

1 Cevap

Bildiğiniz gibi yazma için bir adlandırılmış yöneltme açtığınızda başkası okuma için açılana kadar, engellemek olacaktır. Sana "ve" neden bu olduğunu tahmin 1. exec () çağrısında komut satırının sonunda.

Ancak PHP saygı bu sözdizimi nedir? Ben PHP uzman değilim, ama bu çocuk daha sonra iki exec bitmeden önce (PHP exec () dönüş için doğru bir yöntem değilse) çağrıları tefrika olacak ve tamamen bu engelleme davranışlarını açıklamak istiyorum.