Как получить вывод приложения OS X на консоли, или в файл?

Предупреждение: [fункция] ожидает, что параметр 1 будет ресурсом, boolean задан

(более общий вариант Предупреждение: mysql_fetch_array () ожидает, что параметр 1 будет resource, boolean given )

Ресурсы - это тип в PHP (например, строки, целые числа или объекты). Ресурс является непрозрачным блобом без собственной значимой ценности. Ресурс специфичен и определен определенным набором функций или расширений PHP. Например, расширение Mysql определяет два типа ресурсов :

В модуле MySQL есть два типа ресурсов. Первый - идентификатор ссылки для подключения к базе данных, второй - ресурс, который содержит результат запроса.

Расширение cURL определяет другой два типа ресурсов :

... дескриптор cURL и мультирум cURL.

Когда var_dump ed значения выглядят так:

$resource = curl_init();
var_dump($resource);

resource(1) of type (curl)

Это все большинство ресурсов - это числовой идентификатор ((1)) определенного типа ((curl)).

Вы переносите эти ресурсы и передаете их различным функциям, для которых такой ресурс что-то значит. Обычно эти функции выделяют определенные данные в фоновом режиме, а ресурс - это просто ссылка, которую они используют для отслеживания этих данных внутри.


«... ожидает, что параметр 1 будет ресурсом, логическим данная "ошибка, как правило, является результатом непроверенной операции, которая должна была создать ресурс, но вместо этого вернула false. Например, функция fopen имеет это описание:

Возвращаемые значения

Возвращает ресурс указателя файла при успешном выполнении или FALSE

Таким образом, в этом коде $fp будет либо resource(x) of type (stream), либо false:

$fp = fopen(...);

Если вы не операция fopen будет успешной или неудачной и, следовательно, будет ли $fp действительным ресурсом или false и передать $fp другой функции, которая ожидает ресурс, вы можете получить вышеуказанную ошибку:

$fp   = fopen(...);
$data = fread($fp, 1024);

Warning: fread() expects parameter 1 to be resource, boolean given

Вам всегда нужно проверять возвращаемое значение функций, которые пытаются выделить ресурс , и может выйти из строя :

$fp = fopen(...);

if (!$fp) {
    trigger_error('Failed to allocate resource');
    exit;
}

$data = fread($fp, 1024);

Связанные ошибки:

41
задан pkamb 9 August 2019 в 18:14
поделиться

3 ответа

Chris дал хороший обзор того, как Консоль работает, но конкретно отвечать на Ваш вопрос: Если Вы хотите видеть результаты непосредственно в Вашем Терминале, необходимо запустить созданный продукт как ребенок Терминала, что означает использовать что-то как

/path/debug/build/MyProgram.app/Contents/MacOS/MyProgram

для запуска приложения.

62
ответ дан Ronny Brendel 27 November 2019 в 00:29
поделиться

Откройте Console.app в/Applications/Utilities. Весь вывод NSLog будет распечатан в Системном журнале.

Или при выполнении его из XCode весь вывод будет распечатан в Консоли отладки.

я не нахожусь на своем Mac прямо сейчас и не вспоминаю последовательность команды или меню, Консоль отладки находится в, возможно меню Build?

11
ответ дан the Tin Man 27 November 2019 в 00:29
поделиться

Терминал на Mac OS X является просто другим приложением. Открытие окна терминала для текстового ввода-вывода не является свойственной поддержкой каждого приложения, как это находится в Windows.

, Кроме того, open /path/to/MyApp.app не выполняет MyApp.app как подпроцесс Вашей оболочки, он отправляет сообщение в инфраструктуру запуска операционной системы, прося это выполнять приложение нормальным способом, то же, как будто по нему дважды щелкнули в Средстве поиска или нажали в Прикреплении. Вот почему Вы не в состоянии просто перенаправить его вывод для наблюдения то, что приложение отправляет в stdout или stderr.

можно использовать Console.app для наблюдения вывода приложений, запущенных нормальным способом, потому что инфраструктура запуска конкретно отправляет их stdout и stderr туда. Можно также использовать эти asl стандартные программы, чтобы запросить журнал или выполнить более сложный вход если Вы, так требуйте.

14
ответ дан the Tin Man 27 November 2019 в 00:29
поделиться
Другие вопросы по тегам:

Похожие вопросы: