Intereting Posts
как вызвать restful zend controller usin curl в php? получить категорию третьего уровня в opencart MySQL PDO NOW () как назначенное значение – возможно ли это? Как удалить exif из JPG без потери качества изображения? Установка nodeValue DOMelement: ошибка: попытка получить свойство не объекта запрашивать базу данных mysql внутри класса Поиск определенного индекса с помощью Sphinx, из нескольких индексов, через PHP-скрипт Предупреждение: date () ожидает, что параметр 2 длинный, строка указана в Laravel Mail :: отправить, как передавать данные на почту Посмотреть Как загрузить файл вида из другого представления с помощью Codeigniter БЕЗ необходимости проходить через контроллер? Проверьте, является ли пользователь sysop список, разделенный запятыми, в php Найти последнюю итерацию петли foreach в ларавельном лезвии Сделано поле поиска с полем, скрытым до выпадающего выделения. Является ли регулярное выражение хорошим способом проверки URL-адреса

Компиляция моего собственного расширения PHP в Windows с помощью Visual Studio 2008

Я написал расширение PHP, и его можно было скомпилировать и запустить под Linux. Но на окнах я встретил некоторые проблемы.

Я сделал компиляцию по окнам в соответствии с http://blog.slickedit.com/?p=128 с исходной версией PHP 5.2.10, а после компиляции она сгенерировала файл dll. Но когда я пытался использовать файл dll, он сообщал мне о проблемах с памятью при запуске Apache (Wamp server). И затем я начал процесс отладки, казалось, что у REGISTER_INI_ENTRIES () возникли проблемы.

Вот исходный код расширения PHP, http://www.bluefly.cn/xsplit.tar.gz , и он отлично работает в Linux. Но я также хочу, чтобы он работал в Windows.

Извините, я не профессионал, поэтому надеюсь, что кто-то может мне помочь.

Любая помощь приветствуется и заранее благодарит ~

Причина, по которой вы не видите проблему в Linux, скорее всего, вы делаете поточную безопасную структуру в Windows, но не в Linux. Попробуйте добавить --enable-maintainer-zts в Linux, а затем проверить с помощью valgrind ( USE_ZEND_ALLOC=0 valgrind /usr/bin/php script.php )

С быстрым взглядом на ваш код я увидел, что вы не определили свои php_xsplit_init_globals которые инициализировали переменные потока. Функция Tis должна быть зарегистрирована от MINIT , добавив

 ZEND_INIT_MODULE_GLOBALS(xsplit, php_yplist_init_globals, NULL); 

вызов. Возможно, что-то еще не так, но это первое, что я видел.

Wamp скомпилирован с использованием VC6, и требуется, чтобы ваш модуль был скомпилирован с помощью VC6.

Сообщение Romain Bourdon (автор WampServer): Поскольку Apache скомпилирован с VC6, если вы хотите запустить PHP как модуль (как в WampServer), вы должны скомпилировать модуль с VC6.

Если вы хотите скомпилировать свой модуль с более новой платформой, вам нужно скомпилировать весь дистрибутив PHP-CGI и запустить его как (быстрый) CGI.

Если вы можете прочитать французский (или если вы знаете, как пользоваться переводчиком), вы можете прочитать этот пост .