За последние 24 часа нас посетили 18353 программиста и 1635 роботов. Сейчас ищут 1582 программиста ...

Постоянные ошибки при выполнении.

Тема в разделе "Установка PHP", создана пользователем kokopelli, 19 авг 2009.

  1. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    Мне кажется, что-то не так с моей установкой, поэтому выбрал этот раздел. Причем, со временем становится хуже..

    PHP 5.3.0, IIS7, Windows 7 RC, установлен несколько недель назад.

    Сначала он выдавал "500 - Internal Server Error" всякий раз, когда я пытался использовать неопределенную переменную. Потом перестали идти коды, которые шли раньше. Теперь он считает ошибочным, например, вот такой код:
    PHP:
    1. <?php
    2. $a=fopen("a.t","r");
    3. echo $a;
    4. $b=" ";
    5. fscanf($a,"%s",&$b);
    6. ?>
    Файл a.t есть в текущей директории и все имеют полный доступ к нему.
    Я не буду говорить, что ничего не менял в php.ini, но менял я только про сообщения об ошибках (и то после того, как это началось). Сейчас вернул все к дефолтам - никакого толку. Написанный выше код четко выдает ошибку. Если закомментировать строку с fscanf - то проходит (выдает "Resource id #3").
    Что за ерунда?
    Программирую на PHP я не очень давно, но.. Короче, ткните носом, плз, если я упускаю что-то очевидное.
     
  2. topas

    topas Активный пользователь

    С нами с:
    16 авг 2006
    Сообщения:
    2.258
    Симпатии:
    36
  3. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    Ok, прошло, прочло.
    Но вопрос не в этом, или не совсем в этом..
    Прочитать я могу и так:
    PHP:
    1. $b=fgets($a);
    Вопрос в том, что неверно в fscanf. А?
     
  4. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    ошибки надо не отключать, а читать. В данном случае передача по ссылке параметра $b не приветствуется
    начиная с php5.2.4 в случае если выключены вывод ошибок на экран и в файл пользователю отдаётся 500-ая ошибка
     
  5. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    За совет спасибо, кроме шуток. Кстати, припоминаю теперь - читал уже)).
    Помогло, да. Но вопрос такой: а почему??
    И как же теперь использовать fscanf? Только так:
    PHP:
    1. $c=&$b;
    2. fscanf($a,"%s",$c);
    - да? А оно кому-то надо?.. И теперь все свои скрипты переписывать, исправлять?
    Кстати, в описании fscanf на php.net ничего про деприкейшн не сказано.
     
  6. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    PHP:
    1. <?php fscanf($a,"%s",$b);?>
     
  7. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    мммммммм... блин. То, что я всю сознательную жизнь считал неправильным?
    Цитирую описание этой несчастной пресловутой fscanf с php.net:
    [болд и сайз - мои, k.] - ииииииии?..?.... [смайл, разводящий руками]
     
  8. Luge

    Luge Старожил

    С нами с:
    2 фев 2007
    Сообщения:
    4.680
    Симпатии:
    1
    Адрес:
    Минск
    принимает по ссылке.

    аналогично
    PHP:
    1. <?php
    2. function foo(&a)
    3. {
    4. }
    5.  
    6. $b = '1';
    7. foo($b);
    8. ?>
     
  9. kokopelli

    kokopelli Активный пользователь

    С нами с:
    18 авг 2009
    Сообщения:
    42
    Симпатии:
    0
    Адрес:
    -то..
    Спс, Luge, ты открыл мне глаза.
    Я давно подозревал, что есть какое-то ускользающее различие между PHP и C :). В общем-то, я не против различий. Но все же - зря они сделали это стандартом..

    PS
    [offtop]мне уже не надо говорить заклинаний! 6 сообщений! свобода! урра!!))[/offtop]