Что такое код is_writable

Linux.yaroslavl.ru

Учебник РНР
Назад Вперёд

is_writable — сообщает, можно ли записывать в filename.

Описание

bool is_writable (string filename)

Возвращает TRUE , если filename существует и является writable. Аргумент filename может быть именем директории, позволяя проверять возможность записи в директорию.

Помните, что PHP может иметь доступ к файлам как user id, под которым запущен web-сервер (часто это ‘nobody’). Ограничения безопасного режима не учитываются.

Результаты этой функции кэшируются. См. детали в clearstatcache() .

Эта функция не работает с удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

writable

Англо-русский толковый словарь терминов и сокращений по ВТ, Интернету и программированию. . 1998-2007 .

Смотреть что такое «writable» в других словарях:

Writable — Writ a*ble, a. Capable of, or suitable for, being written down. [1913 Webster] … The Collaborative International Dictionary of English

writable — adjective Date: 1782 1. capable of being put in writing 2. being an electronic storage medium capable of having new data written on it … New Collegiate Dictionary

writable — writ·a·ble also write·a·ble (rīʹtə bəl) adj. Computer Science Capable of recording data. Used of a storage medium: writable compact disks. * * * … Universalium

writable — adj. Writable is used with these nouns: ↑CD … Collocations dictionary

writable — writ•a•ble orwrite•a•ble [[t]ˈraɪ tə bəl[/t]] adj. 1) cvb capable of being written 2) cmp cmp capable of recording data: writable CDs[/ex] • Etymology: 1780–90 … From formal English to slang

writable — write ► VERB (past wrote; past part. written) 1) mark (letters, words, or other symbols) on a surface, with a pen, pencil, or similar implement. 2) write and send (a letter) to someone. 3) compose (a text or work) in writing. 4) compose (a… … English terms dictionary

writable — adjective a) capable of being written b) able to be written data to, usually a file or medium … Wiktionary

Writable — Перезаписываемый; С перезаписью … Краткий толковый словарь по полиграфии

writable — writ·able … English syllables

writable — ˈrīd.əbəl, ītə adjective Etymology: write (I) + able : capable of being put in writing : reducible to written form … Useful english dictionary

Writable Web — Das Writable Web bzw. beschreibbare Web ist eine ursprüngliche Vision des World W >Deutsch Wikipedia

is_writable

is_writable — сообщает, можно ли записывать в filename.

Описание

bool is_writable (string filename)

Возвращает TRUE, если filename существует и является writable. Аргумент filename может быть именем директории, позволяя проверять возможность записи в директорию.

Помните, что PHP может иметь доступ к файлам как user id, под которым запущен web-сервер (часто это ‘nobody’). Ограничения безопасного режима не учитываются.

Результаты этой функции кэшируются. См. детали в clearstatcache().

Эта функция не работает с удалёнными файлами; проверяемый файл обязан быть доступен через файловую систему сервера.

Что такое ввод ключа LongWritable для карты ()?

У меня есть 2 текстовых файла по 1 МБ каждый, которые хранятся в HDFS в качестве входных данных для моей программы MapReduce. В следующей строке мы рассмотрим входную пару для map () is.

Что такое ключ LongWritable здесь? Как это предполагается MapReduce? Есть ли в каждой строке текста во входном файле ключ или для полного текста в файле предполагается единственная клавиша (т. Е. Все строки за раз)?

1. Ключ LongWritable здесь — это offset строки, которое означает position этой строки в файле, а not номер строки. Существует a lot разница между этими двумя.

2- Это not assumed структурой MapReduce. InputFormat это обязанность InputFormat вы используете в своей работе MR. По умолчанию это TextInputFormat который дает байтовое смещение строки в качестве ключа, как в вашем случае.

3. Ну, это опять же зависит от вашего InputFormat. Если вы используете TextInputFormat, то каждая строка будет обрабатываться как значение со смещением в качестве ключа. Но у вас может быть свой собственный InputFormat, который может дать вам только один ключ для всего файла и все строки этого файла в качестве значения.

is_writable() return false

I’m expecting an issue with the PHP function fwrite()

Once executed the script return :

chmod for rss.xml is 755 and safemode is off.

I’m hosted at (mt) mediatemple.com on a (dv) and the script was working fine when I was hosted on a (gs) solution.

I can’t find what’s wrong =/

6 Answers 6

CHMOD 0755 means that only file owner can write into it (group and others can read and execute). You should change CHMOD to 0775 or even 0777 depending of user/group of a PHP.

  • rwx : read,write,execute for owner
  • r-x : read,execute for group
  • r-x : read,execute of others

So, everyone can read (and execute) that file, but only the owner can write to it.

Maybe the user that owns the file is not the one that runs your PHP script ? i.e. the file could belong to anyone, while your script is being run by Apache’s user (often www-data ) ?

A first idea might be to delete the file, let your script try to re-create it ; if it’s re-created properly (which means Apache has the requires write rights on the directoy containing it), it should be able to modify it, after that.

Else, you should try giving the write privilege to other — if your script is being run by another user than the owner of the file ; chmod o+w rss.xml should do the trick.

755 means that the owner of the file can modify it, but not anyone else. The owner is probably not the web server but yourself (your FTP account?), so PHP can’t modify it. Try to give it wider persmissions. Begin with 775 and if that doesn’t work, try 777.

There are some web hosts that runs the web server as the same user as your FTP account so they don’t get support questions regarding file permissions, but in my opinion this is a big security hole. I think that Mediatemple does the right thing to don’t run the web server as your FTP account.

Edit: I overlooked that, as Pascal Martin and others point out, 755 may mean that the file is legitimately not writable, and you may have to 777 it or change owners. I am leaving this answer in place in case everything is set up correctly, and is_writable() still returns false, which is what I was assuming.

Odd. There is a short discussion about this in the is_writable User Contributed Notes. For the guy posting there, switching to PHP 5 solved it (although I suspect it’s a server / PHP / which process runs as which user issue).

What you could try:

  • Find out what user PHP is running as using posix_getuid()
  • Change the owner of the file you are trying to write to to that exact user (not just the group)
  • If it works then, it is maybe really some sort of glitch and you may have to think about trying an fopen() and intercepting its error message if it fails.

And of course: Is the file actually fwrite()able when you bypass the check??

Что такое код is_writable

Determines whether the specified disk is writable.

To perform this operation, call the DeviceIoControl function with the following parameters.

Parameters

A handle to the device. To retrieve a device handle, call the CreateFile function.

The control code for the operation. Use IOCTL_DISK_IS_WRITABLE for this operation.

Not used with this operation; set to NULL.

Not used with this operation; set to zero.

Not used with this operation; set to NULL.

Not used with this operation; set to zero.

A pointer to a variable that receives the size of the data stored in the output buffer, in bytes.

If lpOverlapped is NULL, lpBytesReturned cannot be NULL. Even when an operation returns no output data and lpOutBuffer is NULL, DeviceIoControl makes use of lpBytesReturned. After such an operation, the value of lpBytesReturned is meaningless.

If lpOverlapped is not NULL, lpBytesReturned can be NULL. If this parameter is not NULL and the operation returns data, lpBytesReturned is meaningless until the overlapped operation has completed. To retrieve the number of bytes returned, call GetOverlappedResult. If hDevice is associated with an I/O completion port, you can retrieve the number of bytes returned by calling GetQueuedCompletionStatus.

If hDevice was opened without specifying FILE_FLAG_OVERLAPPED, lpOverlapped is ignored.

If hDevice was opened with the FILE_FLAG_OVERLAPPED flag, the operation is performed as an overlapped (asynchronous) operation. In this case, lpOverlapped must point to a valid OVERLAPPED structure that contains a handle to an event object. Otherwise, the function fails in unpredictable ways.

For overlapped operations, DeviceIoControl returns immediately, and the event object is signaled when the operation has been completed. Otherwise, the function does not return until the operation has been completed or an error occurs.

Return value

If the disk is writeable and the operation completes successfully, DeviceIoControl returns a nonzero value.

If the disk is not writeable or the operation fails, DeviceIoControl returns zero. To get extended error information, call GetLastError. If the disk is read-only, GetLastError returns ERROR_WRITE_PROTECT.

Information Security Squad

Вопрос: Как исправить разрешение файла /etc/sudoers

Вы можете столкнуться с ошибкой, как показано выше, если права доступа к файлу sudoers неверны.

Выполните следующие действия, чтобы исправить разрешения.

1. Убедитесь, что разрешение файла sudoers правильное:

2. Ожидаемый результат:

3. Измените права доступа к файлу при необходимости от имени пользователя root:

4. Если шаг 2 выполнен, проверьте внесенное изменение:

Добавить комментарий Отменить ответ

Самый дешёвый VPN

Рубрики

  • Аудит ИБ (30)
  • Вакансии (7)
  • Закрытие уязвимостей (94)
  • Книги (24)
  • Мануал (1 415)
  • Медиа (65)
  • Мероприятия (29)
  • Мошенники (20)
  • Обзоры (577)
  • Обход запретов (27)
  • Опросы (3)
  • Скрипты (88)
  • Статьи (204)
  • Философия (25)
  • Юмор (12)

Метки

Социальные сети

Поделиться

Anything in here will be replaced on browsers that support the canvas element

Интегрируем SAS и Greenplum

Введение

Данная статья может быть интересна тем, кто использует ETL средства SAS при построении хранилища данных. Недавно у нас завершилась активная фаза проекта по переводу хранилища на БД Greenplum. До этого в качестве базы данных использовались SAS datasets, т.е. фактически таблицы представляли собой файлы на файловой системе. В какой-то момент стало понятно, что скорость роста объемов данных больше той скорости, с которой мы можем увеличивать производительность файловой системы, и было принято решение о переходе на специализированную БД.

Когда мы начинали проект, в интернете было совершено невозможно найти что-нибудь, касающееся связки SAS DIS и Greenplum. Основные моменты перехода и возникшие в процессе трудности и хотелось бы осветить в этой статье.

Дополнительную сложность проекту придавало то, что надо было не строить процессы с нуля, а переделывать существующие, иначе бы сроки и стоимость проекта получились неприемлемыми. Исторически сложилось, что в качестве ETL средства мы используем SAS, и в частности SAS Data Integration Studio. Каждый ETL процесс здесь представляет собой т.н. job, в котором есть входные таблицы, логика их обработки, выходная таблица(ы). Ежедневный процесс загрузки хранилища состоит из

800 таких job’ов. Их нам и предстояло переделать так, чтобы выиграть он переноса входных/выходных таблиц на Greenplum.

SAS/Access for Greenplum

Каким образом код, написанный на SAS Base, работает с таблицами в БД? Для различных баз есть серия продуктов SAS, называющихся обычно SAS Access for . Такой коннектор для Greenplum представляет собой ODBC драйвер со специальной оберткой, позволяющей использовать его из SAS. Коннектор дает два способа доступа к данным:

  • Схема БД определяется через SAS libname и с таблицами можно работать как с обычными SAS datasets. В этом случае SAS-код неявно транслируется в инструкции для БД, но, в случае невозможности такой трансляции (например, если используется какая-то функция SAS, отсутствующая в Greenplum), будет применена обработка запроса на стороне SAS.
  • SQL pass-through. В proc sql можно писать код, который будет передан в ODBC-драйвер фактически as is.

В SAS Data Integration Studio код с использованием механизма pass-through умеет генерировать только трансформ «SQL Join», остальные генерируют обычный SAS код, который надо проверять (по логу)на предмет того, что он в итоге передает в коннектор. Встречались примеры неправильно сгенерированного кода.

Work -> Greenplum Work

По умолчанию принцип работы job’ов в SAS такой, что в качестве места для временных таблиц используется Work — создаваемая при старте сессии на диске директория, доступная только текущему владельцу процесса и удаляемая сразу по его завершении. В work’е содержатся SAS datasets, к которым применим язык SAS Base, что позволяет вести разработку ETL очень быстро. Также такое изолирование позволяет легко «чистить» место за упавшими job’ами, контролировать объемы используемого дискового пространства. При переводе job’ов на Greenplum часть (или все) промежуточные таблицы переезжали из WORK в Greenplum, и возник вопрос, куда эти таблицы складывать в БД?

SAS не позволяет работать с временными таблицами в Greenplum, так что одним из вариантов было использовать для них отдельную схему. Но у такого подхода оказалось несколько существенных минусов:

  • Автоматическая кодогенерация в SAS DI Studio не удаляет таблицы, которые больше не нужны. Потребовалась бы какая-то процедура, встраиваемая в каждый job, т.к. постоянно держать в базе полный объем вспомогательных таблиц ETL — слишком расточительно.
  • Возможны конфликты имен у параллельно работающих job’ов.
  • В случае каких-то проблем сложно идентифицировать, кому (какому job’у) принадлежит таблица.

В результате был выбран другой подход — воспроизвести в БД поведение SAS. Каждая сессия SAS создает в Greenplum схему, в которую складываются все промежуточные таблицы этой сессии. Некоторые детали:

  • Одна такая «work» схема соответствует одной сессии SAS. На старте SAS-сессии в Greenplum создается схема, и на нее назначается SAS-библиотека.
  • В имени создаваемой схемы кодируется необходимая информация, такая как путь до SAS work, хост, пользователь, процесс: %let LOAD_ETL_WRK_SCH_NAME = work_%substr(%sysfunc(pathname(work)),%sysfunc(prxmatch(/(? Теги:
    • SAS
    • Greenplum

    Добавить метки

    OpenSource в заметках

    В статье о сигналах мы рассматривали несложный механизм, позволяющий процессам в ОС реагировать на внешние события. Рассматривались способы отправки сигналов процессам при помощи kill, а также обработка поступающих сигналов в сценариях оболочки. Аналогично сигналам, коды возврата позволяют процессам взаимодействовать с вызвавшими их процессами. Эта тема частенько игнорируется пользователями, однако довольно! Сегодня мы поговорим о кодах возврата и работе с ними.

    Чем являются коды возврата

    Предлагаю начать наше знакомство с простой команды известной практически каждому — mv, которая перемещает файл из одного места файловой системы в другое и, возможно, переименовывает его. Как вы уже, наверное, заметили, при работе mv могут возникать ошибки в случае, если отсутствует исходный файл, или же возникли какие-то другие обстоятельства, помешавшие mv выполнить свою работу. Например:

    Вы видите сообщение об ошибке. Очевидно, что команда не сработала. И в то же самое время за кулисами оболочки инициализируется переменная оболочки, содержащая так называемый «код возврата» последней выполненной команды. При желании мы можем получить значение этой переменной. Попробуйте:

    Если команда выполняется без ошибок, то обычно её код возврата равен нулю. После выполнения команды оболочка автоматически устанавливает значение переменно $? равным этому коду. Если же команда завершится с ошибкой, то, как правило, её код возврата будет отличным от нуля. В примере выше мы сперва пытаемся переместить несуществующий файл при помощи команды mv. Естественно, мы получаем ошибку, о чём свидетельствует сообщение самой программы, а также код возврата равный единице. Затем мы выполняем команду echo, которая завершается успешно. Её код возврата равен нулю.

    Давайте теперь обратимся к info-странице документации программы mv (info coreutils mv). В конце документа есть абзац, говорящий о том, что нулевой код возврата команды означает успешное выполнение, а ненулевой — об ошибке. Небогатый выбор, скажем честно, негде развернуться душе сисадмина!

    Вот grep предлагает более широкий выбор средств диагностики результатов своей работы. Фрагмент из документации: «Обычно нулевой код возврата означает, что искомые строки были найдены, и код равный единице в противном случае. Если же при запуске grep использовалась опция -q, —quiet или —silent, строки были найдены, но возникла какая-то ошибка, то возвращается код 2.»

    Ниже приведён список определённых системных кодов возврата:

    • 1: общие ошибки;
    • 2: ошибки работы встроенных средств оболочки;
    • 126: невозможно вызвать запрошенную команду;
    • 127: команда не найдена;
    • 128: некорректный аргумент exit;
    • 128 + n: сигнал критической ошибки (например, kill -9 = 137);
    • 130: скрипт прерван по Ctrl+C.

    Автор не видел представленного выше списка до тех пор, пока не начал более детально копаться в теме кодов возврата, так что, в принципе, вы можете создавать сценарии вообще не обращая внимание на эту информацию.

    Использование кодов возврата

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

    Оказывается, есть нюанс при работе с переменной $?, который вызван выполнением команд, вроде echo. Взгляните на результат работы сценария:

    Увидели в чём проблема? Код возврата сразу после вызова mkdir равен единице, и это логично, поскольку каталог /usr существует. Но когда мы проверяем значение переменной $? в конструкции if, оказывается, что её значение равно нулю! Почему так? Потому что в этот момент значение переменной $? содержит код возврата предыдущего вызова echo, а не команды mkdir.

    Получившуюся проблему можно решить, например, так:

    Выше показан один из случаев, когда дублирование значения глобальной переменной в локальной имеет смысл. Таким образом, вы получаете возможность затем использовать сохранённое значение глобальной переменной там, где вам нужно, не заботясь о том, что её значение может измениться в результате каких-то событий.

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

    Сокрытие сообщений об ошибках

    Теперь, когда вы знаете, как анализировать код возврата программы, вы можете заменять текст сообщений об ошибках программы на свой собственный. Это можно сделать при помощи оператора >&, который перенаправляет стандартный поток вывода и поток ошибок. Например, в нашем первом простом сценарии вывод команды mkdir можно перенаправить таким образом:

    Вместо >& можно с тем же успехом использовать &> или 2>&1. Конечно, если вы проверяете код возврата команды, то особого смысла в замене текста сообщений об ошибках нет.

    Функция PHP is_writable ()

    Определение и использование

    is_writable () проверяет, является ли запись в указанный файл.

    Если файл может быть записан, функция возвращает TRUE.

    грамматика

    参数 描述
    file 必需。规定要检查的文件。

    Советы и примечания

    Примечание: Результаты этой функции кэшируются.Используйте clearstatcache (), чтобы очистить кэш.

    Илон Маск рекомендует:  Что такое код cpdf_setlinewidth
    Понравилась статья? Поделиться с друзьями:
    Кодинг, CSS и SQL