Jak uruchomić skrypt PHP z wiersza poleceń za pomocą interpretera PHP, który jest używany do analizowania skryptów internetowych?
Mam phpinfo.php
plik, do którego można uzyskać dostęp z programów internetowych, który German
jest zainstalowany. Jeśli jednak uruchomię phpinfo.php
polecenie z wiersza poleceń za pomocą - php phpinfo.php
i grep
dla German
, nie znajdę go. Więc oba pliki phps są różne. Muszę uruchomić skrypt, php
na którym German
jest zainstalowany.
Jak mogę to zrobić?
php
command-line
Siddharth
źródło
źródło
php -i
i przeanalizujphpinfo();
do pytania. Zaktualizowałem także moją odpowiedź.Odpowiedzi:
AKTUALIZACJA:
Po nieporozumieniu w końcu zrozumiałem, co próbujesz zrobić. Powinieneś sprawdzić pliki konfiguracyjne serwera; używasz apache2 lub innego oprogramowania serwera?
Poszukaj wierszy zaczynających się od
LoadModule php
... Prawdopodobnie istnieją pliki / katalogi konfiguracyjne o nazwachmods
lub czymś podobnym, zacznij od tego.Możesz również sprawdzić dane wyjściowe
php -r 'phpinfo();' | grep php
i porównać wierszephpinfo();
z serwera WWW.Aby uruchomić
php
interaktywnie:(więc możesz wkleić / napisać kod w konsoli)
Aby przeanalizować plik i przesłać do konsoli:
Przeanalizuj plik i wyślij do innego pliku:
Potrzebujesz czegoś innego?
Aby uruchomić tylko małą część, jedną linię lub podobną, możesz użyć:
php -r '$x = "Hello World"; echo "$x\n";'
Jeśli używasz Linuksa, zrób to
man php
w konsoli.jeśli potrzebujesz / chcesz uruchomić php przez fpm, użyj cli fcgi
SCRIPT_NAME="file.php" SCRIP_FILENAME="file.php" REQUEST_METHOD="GET" cgi-fcgi -bind -connect "/var/run/php-fpm/php-fpm.sock"
gdzie /var/run/php-fpm/php-fpm.sock to plik gniazda php-fpm.
źródło
which php
aby powiedzieć, który plik wykonywalny jest używany domyślnie. Aby użyć innego pliku wykonywalnego, musisz określić pełną ścieżkę do pliku wykonywalnego, którego chcesz użyć:/path/to/specific/php -f file.php > results.html
Na SuSE istnieją dwa różne pliki konfiguracyjne dla PHP: jeden dla Apache, a drugi dla CLI (interfejs wiersza poleceń). W katalogu / etc / php5 / znajdziesz katalog "apache2" i katalog "cli". Każdy ma plik „php.ini”. Pliki mają ten sam cel (konfiguracja php), ale mają zastosowanie do dwóch różnych sposobów uruchamiania PHP. Pliki te między innymi ładują moduły używane przez PHP.
Jeśli Twój system operacyjny jest podobny, prawdopodobnie te dwa pliki nie są takie same. Twój Apache php.ini prawdopodobnie ładuje moduł gearman, podczas gdy cli php.ini nie. Gdy moduł został zainstalowany (automatycznie lub ręcznie), prawdopodobnie zaktualizował tylko plik php.ini Apache.
Możesz po prostu skopiować plik Apache php.ini do katalogu cli, aby środowisko CLI było dokładnie takie, jak środowisko Apache.
Lub możesz znaleźć wiersz, który ładuje moduł Gearman w pliku Apache i skopiować / wkleić go do pliku CLI.
źródło
Szukałem rozwiązania tego problemu w systemie Windows i wydaje się, że jeśli nie masz środowiska vars w porządku, musisz umieścić pełny katalog. Np. z plikiem w tym samym katalogu co PHP:
źródło
>
na początku prawdopodobnie przekieruje wyjście-f ...
(prawdopodobnie błąd) do pliku php.exe i wyczyści zawartość.