(более общий вариант Предупреждение: 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);
Связанные ошибки:
Chris дал хороший обзор того, как Консоль работает, но конкретно отвечать на Ваш вопрос: Если Вы хотите видеть результаты непосредственно в Вашем Терминале, необходимо запустить созданный продукт как ребенок Терминала, что означает использовать что-то как
/path/debug/build/MyProgram.app/Contents/MacOS/MyProgram
для запуска приложения.
Откройте Console.app в/Applications/Utilities. Весь вывод NSLog будет распечатан в Системном журнале.
Или при выполнении его из XCode весь вывод будет распечатан в Консоли отладки.
я не нахожусь на своем Mac прямо сейчас и не вспоминаю последовательность команды или меню, Консоль отладки находится в, возможно меню Build?
Терминал на Mac OS X является просто другим приложением. Открытие окна терминала для текстового ввода-вывода не является свойственной поддержкой каждого приложения, как это находится в Windows.
, Кроме того, open /path/to/MyApp.app
не выполняет MyApp.app как подпроцесс Вашей оболочки, он отправляет сообщение в инфраструктуру запуска операционной системы, прося это выполнять приложение нормальным способом, то же, как будто по нему дважды щелкнули в Средстве поиска или нажали в Прикреплении. Вот почему Вы не в состоянии просто перенаправить его вывод для наблюдения то, что приложение отправляет в stdout
или stderr
.
можно использовать Console.app для наблюдения вывода приложений, запущенных нормальным способом, потому что инфраструктура запуска конкретно отправляет их stdout
и stderr
туда. Можно также использовать эти asl
стандартные программы, чтобы запросить журнал или выполнить более сложный вход если Вы, так требуйте.