изменение php.ini в веб-роли Windows Azure с помощью скрипта

Я использовал сценарий запуска в веб-роли для установки PHP с помощью установщика платформы Windows. Все в порядке, PHP установлен и приложение работает, однако при загрузке больших файлов приложение выдает ошибку. Я исправил это, отредактировав файл php.ini вручную и изменив upload_max_filesize. Мой вопрос: как я могу изменить файл php.ini автоматически (а не вручную), добавив сценарий som, который будет выполняться ПОСЛЕ установки php. Я написал «ПОСЛЕ», потому что этот сценарий должен ждать, пока мой сценарий запуска не будет полностью выполнен и не будет установлен php. Спасибо за вашу помощь, ценю все советы.

ОБНОВЛЕНО: Ниже приведен мой файл install-php.bat, который находится в папке bin моей веб-роли. Я не знаком с powershell. Как я могу перевести его в скрипт powershell?

ECHO "Starting PHP Installation" >> log.txt

md "%~dp0appdata"
cd "%~dp0appdata"
cd..

reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f

"..\MyWebpicmdline\WebPICmdLine" /Products:PHP53 /AcceptEula >>log.txt 2>>err.txt

reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f

ECHO "Completed PHP Installation" >> log.txt

person user217648    schedule 21.08.2012    source источник
comment
вы можете попробовать использовать ini_set('max_execution_time', 600);, а также для upload_max_filesize.   -  person Arun Jain    schedule 21.08.2012


Ответы (1)


Итак, я предполагаю, что у вас есть задача запуска со следующим:

WebPICmdLine.exe /Products: PHP

Вам нужно будет написать скрипт, который обновит ваш файл php.ini и запустит его после установки PHP. Возможным решением было бы сделать это с помощью PowerShell:

WebPICmdLine.exe /Products: PHP
powershell -command "Set-ExecutionPolicy Unrestricted"
powershell .\UpdatePhpIni.ps1

Найдите сценарий, позволяющий обновлять файлы ini (например, Редактировать файл Ini), добавьте его в свой файл UpdatePhpIni.ps1 и добавьте необходимый код, чтобы изменить время выполнения.

Обратите внимание, что я не эксперт по PHP, но, если я правильно помню, вы должны настроить это в Настройки FastCGI IIS (я думаю, что они имеют приоритет над php.ini).

Обновление: вот как должен выглядеть ваш скрипт с конфигурацией FastCGI.

ECHO "Starting PHP Installation" >> log.txt

md "%~dp0appdata"
cd "%~dp0appdata"
cd..

reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d "%~dp0appdata" /f

"..\MyWebpicmdline\WebPICmdLine" /Products:PHP53 /AcceptEula >>log.txt 2>>err.txt

ECHO Updating activity timeout.
%windir%\system32\inetsrv\appcmd.exe set config -section:system.webServer/fastCgi "/[fullPath='%ProgramFiles(x86)%\PHP\v5.3\php-cgi.exe'].activityTimeout:800"

reg add "hku\.default\software\microsoft\windows\currentversion\explorer\user shell folders" /v "Local AppData" /t REG_EXPAND_SZ /d %%USERPROFILE%%\AppData\Local /f

ECHO "Completed PHP Installation" >> log.txt
person Sandrino Di Mattia    schedule 21.08.2012
comment
спасибо за ваш быстрый и полезный ответ. Я не знаком с powershell. follwoing - это мой файл install-php.bat, который находится в папке bin моей веб-роли. как преобразовать его в powershell? мне нужно использовать powershell для установки php? - person user217648; 21.08.2012
comment
Нет необходимости конвертировать ваш скрипт в PowerShell или использовать Powershell. Я обновлю свой ответ. - person Sandrino Di Mattia; 21.08.2012
comment
Привет, я решил эту проблему, добавив папку php в папку bin webrole и добавив в эту папку файл php.ini, содержащий переменные, которые я хочу изменить. Спасибо, Сандрино, за потраченное время на ответ. ваш ответ правильный, и это помогло мне найти другой пост, который, в свою очередь, решил мою проблему, поэтому я отмечаю ваш ответ как ответ. - person user217648; 22.08.2012