Farklı PHP ile-r seçeneği sonuçları

2 Cevap php

PHP Ben komut satırında php -r <code> kullanın ve php <file> ile dosyayı çalıştırdığınızda, php -f <file> olduğunda farklı hash değerlerini vererek veya içinde kod çalıştırmak gibi görünüyor Apache.

Örneğin, kullanarak komut satırında bir SHA1 kullanım -r:

$ php -r "print sha1('$1S*90');"
77cd8b48ceca53e018f80536b0a44c5b6710425f

Ben dosyası ile aynı çalıştığınızda testSHA.php aşağıda:

<?php
print sha1('$1S*90');
?>

ve kullanarak komut satırında veya Apache içinde çalıştırabilirsiniz mod_php5:

$ php testSHA.php
201cb5aaa7d4db1a49d9be1f2c06d45e4c2a69f2

Böyle "123456789" olarak farklı bir giriş dizesi çalıştığınızda garip olsa da, karmaları iki yöntem kullanılarak maç yok.

Ben iki yöntemle belirlenen farklı bir kodlama ya da karakter kullanıyorum sanmıyorum. Ben de MD5 kullanarak çalıştı ve hala -r ve '-f' ile komut satırında farklı sağlamalarının olsun.

Sağlamalarının Yukarıdaki iki yöntem kullanarak farklı olurdu neden birisi işaret olabilir? Bir dosya / Apache içinde çalıştırmak sanki ben bir dosyaya girmeden kodunu yazın, ve çıkış görebilirsiniz komut satırında PHP çalıştırmak için bir yolu var mı? Adım yoluyla kod hata ayıklama kurmak değilken ben hızlı parçacığını test için komut satırını kullanabilirsiniz.

Teşekkürler.

PS: Ben OpenSUSE 11.1 üzerinde Suhosin-Patch 0.9.7 (cli) ile PHP 5.2.11 kullanıyorum.

2 Cevap

Eğer bash kabuk $ php -r "print sha1('$1S*90');" çalıştırdığınızda, bash bunu ayarlamak sürece muhtemelen boş bir kabuk değişkeni gibi $1 yorumluyor.

print sha1('S*90');: Yani PHP sadece bu görür

Sonucudur: 77cd8b48ceca53e018f80536b0a44c5b6710425f, değer ilk defa elde edildi. :)

Bu gibi kaçabilir:

$ php -r "print sha1('\$1S*90');"

Lütfen dize $ ve ya * belki çünkü "bunun yerine 'arasında, yorumlanır olacak