Linux sistemini kullanarak PHP pencereler üzerinde bir. Bat dosyası çalışan eşdeğeri () nedir

3 Cevap php

Ben kullanarak benim windows makinede bir. Bat dosyası çalışır bir PHP komut dosyası var

$ Result = sistemi ("cmd / C nameOfBatchFile.bat");

Bu, bazı çevre değişkenlerini ayarlar ve komut satırından Amazon EC2 API çağırmak için kullanılır.

Ben aynı Nasıl bir Linux sunucu yapmalıyım? Ben bir kabuk (. Sh) benim. Bat dosyası adını ve env değişkenler ayarlarken 'ihracat' kullanmak için komut değişti. Ben bir macun terminalden kodu çalıştırarak test ettik ve ne olması gerektiği yapar. Yani komut komutlar iyi biliyorum. Nasıl bu PHP çalıştırmak mı? Ben yeni dosya ile yukarıdaki gibi aynı komutu çalıştırarak denedim ve herhangi bir hata veya bulunamadı vb dosya ama çalışmak için görünmüyor yok.

Nerede bu çözmeye çalışıyorum başlar?

---------------------------------- GÜNCELLEME --------------- ----------------

İşte kabuk dosyasını çağıran PHP script -

function startAmazonInstance() {
$IPaddress = "1.2.3.4"
    $resultBatTemp = system("/cmd /C ec2/ec2_commands.sh");
    $resultBat = (string)$resultBatTemp;
    $instanceId  = substr($resultBat, 9, 10);           
    $thefile = "ec2/allocate_address_template.txt"; 
    // Open the text file with the text to make the new shell file file
    $openedfileTemp = fopen($thefile, "r");
    contents = fread($openedfileTemp, filesize($thefile));
    $towrite = $contents . "ec2-associate-address -i " . $instanceId . " " . $IPaddress; 
    $thefileSave = "ec2/allocate_address.sh"; 
    $openedfile = fopen($thefileSave, "w");
    fwrite($openedfile, $towrite);
    fclose($openedfile);
    fclose($openedfileTemp);
    system("cmd /C ec2/mediaplug_allocate_address_bytemark.sh");    
}

. Ec2_commands.sh - Ve burada sh dosyası

#!/bin/bash
export EC2_PRIVATE_KEY=$HOME/.ec2/privateKey.pem
export EC2_CERT=$HOME/.ec2/Certificate.pem
export EC2_HOME=$HOME/.ec2/ec2-api-tools-1.3-51254
export PATH=$PATH:$EC2_HOME/bin
export JAVA_HOME=$HOME/libs/java/jre1.6.0_20
ec2-run-instances -K $HOME/.ec2/privateKey.pem -C $HOME/.ec2/Certificate.pem ami-###### -f $HOME/.ec2/aws.properties

Ben komutları iş tamam biliyorum bu yüzden ben komut satırından bu dosyayı çalıştırmak mümkün olmuştur. Ben windows bu çalışma vardı örneği başladı ve ben sonuçları ekrana echo olabilir gibi bir gecikme olacak. Şimdi hiçbir şey oluyor sanki hiçbir gecikme yoktur.

3 Cevap

Kabuk script ilk satırında bir karma-patlama koydu.

#!/bin/bash

Sonra o çalıştırılabilir bayrağını vermek.

$ chmod a+x yourshellscript

Daha sonra sistemi ile PHP onu çağırabilirsiniz.

$result = system("yourshellscript");

Komut çalıştırılabilir mi? Değilse, bunu yapmak:

$ chmod a+x script.sh          # shell

system ("/path/to/script.sh"); // PHP

ya da tercüman aracılığıyla başlatmak:

system("sh /path/to/script.sh");        // PHP

Tercüman kabuk (yani #!/bin/sh hat) belirtilir?

Eğer (shell_exec denedim)?