php komut dosyası tarafından bir. exe programı çalıştırmak için nasıl

5 Cevap

I want to execute a .exe file on my Apache server using a php script. the procedure is as follow:

1 - Kullanıcı, gelen bir html formu doldurur

2 - Bir php script goses

3 - php komut name.exe dosyasını yürütür

4 - php name.exe sayfada dosya çıkışını yazdırır.

Ben böyle pencerelerden normalde name.exe yürütmek:

run--> cmd--> D:\name [command]

name.exe aynı dizinde kütüphaneleri gibi diğer dosyaları ile iletişim kurmak gerekiyor.

windows cmd tam comand bu gibi:

D:\name library.dll [input from user]

ardından program yürütür ve cmd penceresinde bazı sonuçlar yazdırır.

I actually want to run this program on my server form my clients. I dont know how, but I now there is a way to do this.

Başka bir ilgili questoin, ben Linux sunucu üzerinde yüklemek ve name.exe yürütebilirsiniz herhangi bir kabuk olmasıdır?

thanks in advanced, John.

5 Cevap

Bu olasılıkla çözer daha fazla sorun (özellikle güvenlik sorunları) yaratacaktır olarak çözüm yeniden düşünmek ediniz. Bir PHP script programı yürütmek sahip olarak formunuza aşağıdaki giren bir kullanıcının tehlike çalıştırın:

John Doe; rm \windows\*

veya

John Doe; rm d:\name\*

Eğer kötü niyetli komut enjeksiyon almazsınız böylece çok kontrollü bir alt kümesi için kullanıcı girişi sınırlamak istiyorum.

PHP bir exec() sağlamaz ama çok dikkatli olun.

Sen komuta göndermeden önce escapeshellarg ile kullanıcı girişi kaçmak gerekir.

$saferinput = escapeshellarg($input);
system('D:\name library.dll '.$saferinput);

Muhtemelen passthru() veya exec() istiyorum.

name.exe altında iyi çalışır eğer Linux gibi, WINE, muhtemelen kullanmak passthru() veya shell_exec() ve {çalıştırmak ŞARAP aramak isterim [(0)]}. Ben name.exe ne hiçbir fikrim yok, bu yüzden runs ŞARAP altında, o olacak aslında work garantisi yok bile.

Linux keyfi Windows çalıştırılabilir çalıştırmasına olanak veriyor ancak hiçbir sihirli kabuk vardır.

Belirtildiği gibi, very careful of what you allow to get to exec() veya passthru() veya komut dışında kodu çalıştırır başka bir şey olabilir. Ben kadarıyla muhtemelen bunu yapıyorsun ne olursa olsun yapıyor olması gerektiğini söylemek için gitmek için gitmiyorum, ama üzerinde çalışıyoruz ne olursa olsun üzerinde çalışan biri değilim :)

Bu çok kötü bir fikir. Kenara etkili sitenize çalıştırılabilir dosyaları çalıştırmak için güç Ziyaret herkes verir, web sunucusu yürütülüyor altında kullanıcı hesabı, saçma izinleri vermek zorunda, sizin parçacığı güvenlik sorunları, dosya sistemi kilitleme sorunları, ve diğerleri riski çalıştırın.

Kesinlikle bu exe kullanmanız gerekiyorsa, bir kuyruk sistemi oluşturmak. Sitenizin uygun bir depo (örneğin, bir veritabanı) içine form isteği koyduk, ve bir hizmet poll bu süreci çalıştırmak için periyodik veritabanı var. Bu web sitesi ve exe için kullanıcı hesapları ve ilgili izinleri ayrılması, eş zamanlı yürütme sorunları ortadan kaldırır, ve siteniz için yanıt gecikme azalır sağlar.

Bazı (öksürük) diller aynı dil / techology bu hizmeti ve sitenizin kodu oluşturmak için izin, ancak bu durumda böyle bir hizmet oluşturmak için. NET veya diğer derlenmiş dil patlak gerekecek.

Ben PHP SSH kullanarak sunucuya bağlanarak bu yapabileceğini düşünüyorum. SSH üzerinden sunucuya bağlanmak için olanak sağlayan bir kütüphanedir (http://phpseclib.sourceforge.net/) vardır. Daha önce ben telnet ve execte. Exe kullanarak sunucuya bağlanırken çalıştı. Ama benim okul yönetici güvenlik nedeniyle telnet engelledi, bu yüzden ssh üzerinde çalışmak gerekir.