Назад | Перейти на главную страницу

Как я могу запустить php-скрипт из CLI, не добавляя к нему «php»?

Я пытаюсь создать скрипт, который запускается с веб-сервера, который будет запускать файл php через exec(), но я хочу, чтобы это было сделано без добавления php к нему. Это можно сделать?

Использование Windows 2008 и XAMPP

Нет, файл php не может быть напрямую исполнен в Windows. Вам понадобится обходной путь, например, упаковка php filename.php команда в пакетном файле.

Это можно сделать в Windows 7 - я не знаю, применима ли та же идея к Windows 2008, - однако эффекты такого подхода могут перевесить преимущества.

По сути, все, что вам нужно сделать, это сделать php-cli.exe программа по умолчанию для открытия файлов .php.

Я сделал это двумя способами, я не уверен, нужны ли оба способа.

Во-первых, сделайте php-cli.exe (или, я полагаю, php.exe) программой по умолчанию для открытия файлов .php.

В Windows это означает: щелкните правой кнопкой мыши файл .php, выберите «Открыть с помощью ...», найдите и выберите исполняемый файл php-cli.exe и «установить по умолчанию».

Я считаю, что в Windows 2008 эта функция может быть достигнута через Панель управления> Программы по умолчанию> Связать тип файла или протокол с программой.

После того как исполняемый файл php-cli.exe установлен в качестве приложения по умолчанию для файлов .php, вы должны достичь своей цели с некоторыми побочными эффектами.

На этом этапе, если вы запустите scriptname.php из командной строки, он будет выполнен php-cli.exe, а результат будет отображаться под приглашением - что может быть тем, что вы хотите; однако, если вы дважды щелкните файл, он также будет запущен php-cli.exe (вместо вашего предпочтительного редактора) - что, вероятно, вам не нужно.

Тем не мение, assoc .php (по крайней мере, в моем случае), вернул тип файла, соответствующий используемому мной редактору (и проверил этот тип файла с помощью ftype дал путь к тому же редактору).

Чтобы исправить это, запустите что-то подобное (от имени администратора):

ASSOC .php=PHPScript && FTYPE PHPScript="C:\Program Files (x86)\Xampp\php\php.exe" %1 %* 

После этого, открыв свой тестовый файл PHP в браузере, выполнил второй тестовый скрипт (без использования префикса php) и отобразил результат.

Ради интереса, мои тестовые скрипты были: test2.php (запускаются в браузере):

<?php
echo exec('test1.php');
?>

test1.php (в той же папке):

<?php
echo date('r');
?>

(Протестировано в Windows 7 с XAMPP 1.7.7 / PHP 5.3.8)