Я использую Windows 7, php 5.3.5 и WAMP-сервер. У меня есть два php-файла: trigger.php и background.php.
Я хочу запустить background.php как фоновый процесс. Мне нужно вызвать этот файл из trigger.php. Для этого я использовал ниже метод. Я включил следующий код в trigger.php, чтобы сделать background.php для обработки в фоновом режиме.
$handle = popen('start /b C:\wamp\bin\php\php5.3.5\php.exe C:\wamp\www\email3.php','r');
in background.php У меня есть код для подключения к базе данных.
$conn_string = "host=localhost port=5432 dbname=tagbase user=postgres password=postgres";
теперь, при разборе этой строки, я получаю следующую ошибку:
Неустранимая ошибка: вызов неопределенной функции pg_connect () в C: \ wamp \ www \ background.php в строке 3 Стек вызовов: 0,0002 322792 1. {main} () C: \ wamp \ www \ background.php: 0
При поиске в Интернете я нашел некоторые решения и внес изменения, как рекомендовано ниже в php.ini,
uncommented, extension=php_pdo_pgsql.dll, uncommented, extension=php_pgsql.dll, uncommented, extension_dir = "c:/wamp/bin/php/php5.3.5/ext/",
также у меня есть файлы php_pdo_pgsql.dll и php_pgsql.dll в папке c:/wamp/bin/php/php5.3.5/ext/
.
Любые предложения приветствуются.
Конфигурация Apache 2.2.X
Добавьте следующую строку в конфигурацию Apache 2.2.x httpd.conf:
LoadFile "C:/Program Files/PostgreSQL/{version}/bin/libpq.dll"
Над строкой должна быть введена перед следующей строкой.
LoadModule php5_module "c:/wamp/bin/php/php5.2.11/php5apache2_2.dll"
Конфигурация PHP 5.2.X
Включите следующие две строки в файле конфигурации php.ini. Под «Enable» я имею в виду, удалите трейлинг; (точка с запятой). Этим вы не комментируете строку.
extension=php_pdo_pgsql.dll extension=php_pgsql.dll
Перезапустить WAMP
Протестируйте, добавив это в свой index.php
echo extension_loaded('pgsql') ? 'yes':'no';
(источник: http://www.plaatsoft.nl/wamp-postgresql-integration/ )
если мы установим WAMP-сервер, мы получим два файла php.ini. один в C: \ wamp \ bin \ php \ php5.3.5 и другой в C: \ wamp \ bin \ apache \ Apache2.2.17 \ bin.
если мы выполним php-файл из браузера, тогда будет передан файл php.ini в C: \ wamp \ bin \ apache \ Apache2.2.17 \ bin. если мы выполним файл php из командной строки, то будет передан файл php.ini в C: \ wamp \ bin \ php \ php5.3.5.
что когда-либо изменения, которые я включил / отключил dll в PHP-> PHP-расширениях, все изменения будут сохранены в файле C: \ wamp \ bin \ apache \ Apache2.2.17 \ bin \ php.ini. но файл C: \ wamp \ bin \ php \ php5.3.5 \ php.ini остается без изменений.
для моей проблемы я внес следующие изменения
uncommented, extension=php_pdo_pgsql.dll, uncommented, extension=php_pgsql.dll, uncommented, extension_dir = "c:/wamp/bin/php/php5.3.5/ext/",
в файле C: \ wamp \ bin \ php \ php5.3.5 \ php.ini. Теперь он работает хорошо. 🙂
В моем случае с Apache / 2.4.10 PHP версии 5.4.32 PostgeSQL 9.3 я добавил libpq.dll в Apache httpd.conf из каталога PHP, потому что Apache отказался начать с libpq.dll из PostgreSQL 9.3