Страница 1 из 1
mod_php на winXP падает вместе с апачем
Добавлено: 2008-03-15 21:30:24
BlackCat
Это не вопрос, просто редко такое наблюдал. Вот роняющий скрипт:
Код: Выделить всё
<?php
$empty = new VARIANT(NULL,VT_NULL);
com_print_typeinfo($empty);
?>
Стоит:
Apache-2.0.50 (Win32)
PHP-5.2.1
ZendOptimizer-3.2.2
Re: mod_php на winXP падает вместе с апачем
Добавлено: 2008-03-16 8:31:04
zg
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
Re: mod_php на winXP падает вместе с апачем
Добавлено: 2008-03-16 8:42:28
zg
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.
Re: mod_php на winXP падает вместе с апачем
Добавлено: 2008-03-17 7:56:45
BlackCat
Реализация COM в php напоминает минное поле - шаг влево, шаг вправо и получаем неперехватываемое исключение.
=====
А скрипт действительно не по мануалу, случайно получилось: разбирал на запчасти несколько объектов, не посмотрел на объявление переменной и получил креш.