Статьи

Запустите PHP-GTK и PHP-Apache на Win32

Чтобы установить сцену: у вас есть PHP, работающий счастливо как модуль Apache на вашем компьютере для разработки Windows. Весьма разумно, что вы только тестируете PHP / Apache в Windows и всегда загружаете в какой-то вариант * NIX для размещения ваших страниц и приложений. Все идет нормально.

Затем вы услышите о PHP-GTK и увидите огромное преимущество возможности разрабатывать клиентские графические интерфейсы для платформы x с платформой PHP по сравнению с JAVA или VB. Вы уже знаете, что PHP может обрабатывать практически все, что вы можете на него бросить, и вы уже знаете это наизнанку — так почему бы вам не использовать его?

Таким образом, вы загружаете последнюю версию двоичного файла PHP-GTK с gtk.php.net и внимательно следуйте инструкциям … вот где все начинает идти не так. Давайте посмотрим, почему, и посмотрим, сможем ли мы вернуть вас на путь успешного запуска PHP-GTK и PHP-Apache на Win32.

Установка

После загрузки PHP-GTK, если вы будете следовать инструкциям по установке PHP-GTK, откройте командную строку и введите c: gtkphp4php.exe -qc: gtksamplestest.php. Теперь, когда вы нажмете «возврат», произойдет 1 из 4 вещей:

  1. PHP-GTK будет работать должным образом и не повлияет на вашу существующую настройку PHP-Apache (желательно, но маловероятно)
  2. PHP-GTK будет работать как положено, но вы получите несколько необычных ошибок при запуске Apache
  3. PHP-Apache будет продолжать работать в обычном режиме, но PHP-GTK не будет работать при каждой попытке
  4. Ни PHP-GTK, ни mod_php больше не работают

Почему это происходит? Потому что вы следовали инструкциям!

Первое, что многие люди делают, это именно то, о чем им говорит загрузка PHP-GTK — они распаковывают php4ts.dll в папку system32, перезаписывая, таким образом, любые существующие версии и, если вам не очень повезет, вызывают установку apache mod_php в потерпеть неудачу

Обратите внимание, что если после установки PHP-GTK ваша настройка apache-php не удалась, вам нужно переустановить PHP — Apache не является проблемой. Также обратите внимание, что если у вас еще нет PHP-Apache на вашей машине, установка в соответствии с рекомендациями на gtk.php.net будет работать без сбоев, но это необычный сценарий для любого разработчика, который интересуется PHP-GTK.

Почему это терпит неудачу?

Существует две основные причины, по которым рекомендуемая установка может завершиться неудачно.

1. PHP версии

Поскольку PHP-GTK и PHP развиваются с разной скоростью, не всегда легко собрать двоичные файлы PHP и PHP-GTK для одной и той же сборки. Таким образом, php_gtk.dll & php4ts.dll могут быть скомпилированы с PHP4.1. * Cvs и вашими основными бинарниками PHP с 4.2.1 (надеюсь, вы уже обновились до 4.2.2).

Вы можете получить более свежие версии сборок PHP-GTK здесь , но даже если у вас есть все правильные версии, я все же рекомендую на этом этапе цикла разработки PHP-GTK перейти к следующей структуре. Почему? Просто потому, что это не может пойти не так — это должно (и работает) работать и будет работать даже после обновления вашей версии Apache-PHP.

2. php.ini

Проблема php.ini частично связана с проблемой управления версиями. В php.ini, который использует PHP (как модуль Apache), есть несколько несовместимых модулей в списке, а также совершенно разные пути включения и несколько других камней преткновения (например, оптимизатор Zend). Опять же, поскольку трудно получить совместимые версии GTK и PHP, нам необходимо полностью разделить их.

… Так что давайте начнем!

Предположения

Я предполагаю, что у вас PHP работает как модуль Apache.

Расположение, в котором вы установили свои бинарные файлы PHP и Apache, не имеет значения, за исключением того, что PHP установлен на C: PHP. PHP-GTK будет предполагать, что PHP установлен на C: PHP (если вы не укажете это иначе), и если вы установили его в другом месте, вы можете обнаружить, что некоторые сценарии PHP-GTK будут работать, а другие не будут работать.

Установка

Возьмите последний двоичный файл GTK с gtk.php.net, разархивируйте его в папку по вашему выбору (я предлагаю c: gtk для целей этого урока), и у вас должна быть структура, подобная этой:

  • php4 -> бинарные файлы php и php-gtk
  • winnt -> файл php.ini по умолчанию
  • winntsystem32 -> двоичные файлы gtk, используемые расширением
  • образцы -> несколько образцов, чтобы продемонстрировать использование

Я предполагаю, что вы разархивировали в c: gtk, хотя где-нибудь подойдут. Затем перейдите в папку winntsystem32, возьмите все ее содержимое и поместите эти файлы в папку php4. Сделайте то же самое для файла php.ini в winnt. После этого вы можете удалить папку c: gtkwinnt (не беспокойтесь — у вас всегда будет zip-файл в качестве резервной копии). Вот и все: установлено!

Теперь, если это кажется слишком простым, ну, это так. Однако теперь вы захотите проверить, работает ли он или нет. Есть несколько примеров скриптов, которые поставляются с PHP-GTK, но давайте разберемся здесь с кратким изложением. Мы сделаем это настолько простым, насколько это возможно — окно с кнопкой — но не беспокойтесь о том, как оно работает в данный момент. Просто проверьте, чтобы убедиться, что он действительно работает!

Тест

Сохраните следующее как -fc: gtksamplessimple.php (и пока не беспокойтесь о том, что в коде).

<?   
dl('php_gtk.'.(strstr(PHP_OS, 'WIN') ? 'dll' : 'so'));  
 
function delete_event(){  
   return false;  
   }  
 
function shutdown(){  
   print("Shutting down...  
");  
   gtk::main_quit();  
   }  
     
function hello(){  
   global    $window;  
   print 'Hello World! "  
."';  
   $window->destroy();  
}  
 
$window = &new GtkWindow();  
$window->connect('destroy', 'shutdown');  
$window->connect('delete-event', 'delete_event');  
$window->set_border_width(10);  
 
$button = &new GtkButton('Hello World!');  
$button->connect('clicked', 'hello');  
$window->add($button);  
 
$window->show_all();  
Gtk::main();  
?>  

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

В нашей командной строке есть три раздела:

  1. путь к PHP
  2. путь к вашему php.ini и
  3. путь к вашему сценарию
 cd c:gtkphp4php.exe -q

Эта команда сообщает Windows, где найти PHP.exe, если его нет в вашей PATH (и если он находится в вашей PATH, это, вероятно, неправильный php.exe). -q

Попытка использовать ваш существующий php.ini в системном каталоге может вызвать много ошибок, в зависимости от того, насколько сильно вы его изменили (хотя для начала вы можете ожидать, что все пути включения и расширения будут неправильными).

-c your_pathphpphp.ini

 -c c:gtkphp4php.ini

Теперь: определение пути к скрипту, который мы хотим запустить. -f На самом деле вы можете жить без него в большинстве случаев, но это вряд ли стоит использовать!

 -f c:gtksamplessimple.php 

Все это складывается как неуклюжее, но эффективное

cd c: gtkphp4php.exe -q -cc: gtkphp4php.ini -fc: gtksamplessimple.php

Вы можете понять, почему пакетные файлы так полезны (мазохисты могут набрать вышеперечисленное в командной строке, если захотят). Я бы сохранил вышеупомянутое как c: gtksimple.bat (или в любом месте на вашем компьютере) и щелкнул бы прочь. Вуаля! окно X-платформы без змеи на сайте.

Подводя итог, получите ваш каталог gtk, который будет выглядеть так: C: gtkphp4

  • GDK-1.3.dll
  • бойкий-1.3.dll
  • GModule-1.3.dll
  • гну-intl.dll
  • GTK-1.3.dll
  • Iconv-1.3.dll
  • Libglade-0.14.dll
  • libxml.dll
  • php.exe
  • php.ini
  • php_gtk.dll
  • php_gtk_libglade.dll
  • php_gtk_sqpane.dll
  • php_win.exe
  • php4ts.dll

И каталог тестирования C: gtksamples

  • simple.php (среди прочих)

Это основы — и все, что вам нужно для запуска PHP-GTK!

Примечания и ресурсы

php_win.exe?

Вы, наверное, заметили php_win.exe. Насколько я могу судить, php_win.exe отличается только тем, что позволяет вашим скриптам PHP-GTK работать без окна DOS, которое в противном случае будет появляться при каждом запуске приложения PHP-GTK. Это отлично подходит для презентации, но учтите, что если вы откроете эхо в stdout, то приложение будет аварийно завершать работу, поэтому направьте любой вывод в файл, если вы хотите отладить с помощью php_win.exe.

Кроме того, похоже, что php_win.exe сначала ищет расширения и т. Д. В C: PHP. Он будет использовать их, если найдет их, в отличие от тех, что в system32 (это только мое наблюдение).

расширения

В вашем c: gtkPHP4php.ini не должно быть расширений. Мы используем dt () для модуля gtk, и вам придется тестировать отдельные расширения методом проб и ошибок (MySQL / FTP и т. Д. Все доступны в любом случае).

Вывод…

Теперь, когда вы настроены, вам будет интересно, что будет дальше. Я бы посоветовал вам скачать руководство по PHP-GTK с gtk.php.net и просмотреть сайт — в руководстве есть несколько полезных фрагментов, а также несколько ссылок на приложения и другие ресурсы, которые являются хорошей отправной точкой для мирового господства через PHP и PHP-GTK! Наслаждайтесь!