Я пытаюсь создать скрипт, который запускается с веб-сервера, который будет запускать файл 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)