mod_php на winXP падает вместе с апачем

И всё прочее, что касается HTML
Правила форума
Убедительная просьба юзать теги [code] при оформлении листингов.
Сообщения не оформленные должным образом имеют все шансы быть незамеченными.
Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

mod_php на winXP падает вместе с апачем

Непрочитанное сообщение BlackCat » 2008-03-15 21:30:24

Это не вопрос, просто редко такое наблюдал. Вот роняющий скрипт:

Код: Выделить всё

<?php
$empty = new VARIANT(NULL,VT_NULL);
com_print_typeinfo($empty);
?>
Стоит:
Apache-2.0.50 (Win32)
PHP-5.2.1
ZendOptimizer-3.2.2

Хостинговая компания Host-Food.ru
Хостинг HostFood.ru
 

Услуги хостинговой компании Host-Food.ru

Хостинг HostFood.ru

Тарифы на хостинг в России, от 12 рублей: https://www.host-food.ru/tariffs/hosting/
Тарифы на виртуальные сервера (VPS/VDS/KVM) в РФ, от 189 руб.: https://www.host-food.ru/tariffs/virtualny-server-vps/
Выделенные сервера, Россия, Москва, от 2000 рублей (HP Proliant G5, Intel Xeon E5430 (2.66GHz, Quad-Core, 12Mb), 8Gb RAM, 2x300Gb SAS HDD, P400i, 512Mb, BBU):
https://www.host-food.ru/tariffs/vydelennyi-server-ds/
Недорогие домены в популярных зонах: https://www.host-food.ru/domains/

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: mod_php на winXP падает вместе с апачем

Непрочитанное сообщение zg » 2008-03-16 8:31:04

php 5.2.5.5 падает под виндой.... :( запускал из зендстудии 5.5.1

http://ru2.php.net/manual/ru/class.variant.php хм... фигня какая-то :?

там баги связанные с COM, если делать по мануалу, то не падает

Код: Выделить всё

<?php
$v = new variant(null, VT_NULL);

echo variant_get_type($v);
//com_print_typeinfo($empty);
?>

X-Powered-By: PHP/5.2.5
Content-type: text/html

1

zg
полковник
Сообщения: 5845
Зарегистрирован: 2007-12-07 13:51:33
Откуда: Верх-Нейвинск

Re: mod_php на winXP падает вместе с апачем

Непрочитанное сообщение zg » 2008-03-16 8:42:28

http://ru2.php.net/manual/ru/function.c ... peinfo.php как я понял функция com_print_typeinfo вообще работает только с COM объектами, на все остальные классы выдаётся исключение

Код: Выделить всё

<?php
    $oExplorer = new COM("Shell.Application");
    com_print_typeinfo($oExplorer);
?>

X-Powered-By: PHP/5.2.5
Content-type: text/html

class IShellDispatch4 { /* GUID={EFD84B2D-4BCF-4298-BE25-EB542A59FBDA} */
	/* DISPID=1610940416 */
	/* VT_HRESULT [25] */
	function WindowsSecurity(
		)
	{
		/* Windows Security */
	}
	/* DISPID=1610940417 */
	/* VT_HRESULT [25] */
	function ToggleDesktop(
		)
	{
		/* Raise/lower the desktop */
	}
	/* DISPID=1610940418 */
	/* VT_HRESULT [25] */
	function ExplorerPolicy(
		/* VT_BSTR [8] [in] */ $bstrPolicyName,
		/* VT_PTR [26] [out] --> VT_VARIANT [12]  */ &$pValue 
		)
	{
		/* Return explorer policy value */
	}
	/* DISPID=1610940419 */
	/* VT_HRESULT [25] */
	function GetSetting(
		/* VT_I4 [3] [in] */ $lSetting,
		/* VT_PTR [26] [out] --> VT_BOOL [11]  */ &$pResult 
		)
	{
		/* Return shell global setting */
	}
}

и такой код

Код: Выделить всё

<?php
    com_print_typeinfo(new ArrayObject());
?>

X-Powered-By: PHP/5.2.5
Content-type: text/html

<br />
<b>Fatal error</b>:  Uncaught exception 'com_exception' with message 'expected a variant object' in PHPDocument1:2
Stack trace:
#0 PHPDocument1(2): com_print_typeinfo(Object(ArrayObject))
#1 C:\Program Files\Zend\ZendStudio-5.5.1\bin\php5\dummy.php(1): include('PHPDocument1')
#2 {main}
  thrown in <b>PHPDocument1</b> on line <b>2</b><br />
при попытке передать, например, строку, так же вываливается недопустимая ошибка, скорее всего это связано с недостаточной проверкой входных данных, может быть попытка работать с простым типом как с объектом COM.

Аватара пользователя
BlackCat
прапорщик
Сообщения: 469
Зарегистрирован: 2007-10-16 22:40:42

Re: mod_php на winXP падает вместе с апачем

Непрочитанное сообщение BlackCat » 2008-03-17 7:56:45

Реализация COM в php напоминает минное поле - шаг влево, шаг вправо и получаем неперехватываемое исключение.
=====
А скрипт действительно не по мануалу, случайно получилось: разбирал на запчасти несколько объектов, не посмотрел на объявление переменной и получил креш.