Чтобы установить сцену: у вас есть 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 вещей:
- PHP-GTK будет работать должным образом и не повлияет на вашу существующую настройку PHP-Apache (желательно, но маловероятно)
- PHP-GTK будет работать как положено, но вы получите несколько необычных ошибок при запуске Apache
- PHP-Apache будет продолжать работать в обычном режиме, но PHP-GTK не будет работать при каждой попытке
- Ни 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.
В нашей командной строке есть три раздела:
- путь к PHP
- путь к вашему php.ini и
- путь к вашему сценарию
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! Наслаждайтесь!