<?xml version="1.0" encoding="koi8-r"?>
<rss version="0.91">
<channel>
    <title>OpenForum RSS: Как в PHP полностью корректно экранировать для Shell&apos;а?</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html</link>
    <description>Добрый день Товарищи!&lt;br&gt;&lt;br&gt;Скажите пожалуйста, если есть такая гипотетическая задача:&lt;br&gt;Скрипт в PHP берёт из БД данные и делает с ними что-то типа того:&lt;br&gt;&lt;br&gt;&#091;code&#093;&lt;br&gt;//Массив строк для shell&apos;а&lt;br&gt;$arr = &#091;&#093;;&lt;br&gt;&lt;br&gt;//В $result данные типа SELECT aa.filePath, aa.linkPath FROM tablename&lt;br&gt;while($cur=mysqli_fetch_array($result))&#123;&lt;br&gt;    //Собственно сам вопрос в этом блоке. Как в PHP корректно экранировать путь к файлу для shell&lt;br&gt;    //чтобы исходный к примеру путь: /home/vasyan kudrikov/file super cool!!!.avi&lt;br&gt;    //был экранирован c учётом всех требуемых для shell к экранированию символов&lt;br&gt;    //для свободного уже использования этого значения как аргумента к командам shell&apos;а?&lt;br&gt;    $escFilePath = HOW_TO_ESC($cur&#091;0&#093;);&lt;br&gt;    $escLinkPath = HOW_TO_ESC($cur&#091;1&#093;);&lt;br&gt;&lt;br&gt;    //Мне надо сформировать shell скрипт с манипуляцией файлов.&lt;br&gt;    $arr&#091;&#093; = &apos;ln -s &apos;.$escFilePath.&apos; &apos;.$escLinkPath;&lt;br&gt;&#125;&lt;br&gt;&lt;br&gt;//Вывод результата в stdout&lt;br&gt;echo implode(&quot;&#092;n&quot;, $arr);&lt;br&gt;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Собственно как организовать эту HOW_TO_ESC()?&lt;br&gt;&lt;br&gt;</description>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Кровосток)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#15</link>
    <pubDate>Mon, 25 Jul 2022 13:53:31 GMT</pubDate>
    <description>&amp;gt; да блин &lt;br&gt;&amp;gt; ln -s &apos;bloodstream&apos;&#092;&apos;&apos;s file.txt&apos; &apos;bloodstream&apos;&#092;&apos;&apos;s link.txt&apos; &lt;br&gt;&lt;br&gt;Да, работает. Т.е. условно можно все одинарные кавычки в имени при необходимости заменять на &apos;&#092;&apos;&apos; ? &lt;br&gt;&lt;br&gt;Спасибо за монетку в копилку знаний :)&lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Ann None)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#14</link>
    <pubDate>Fri, 22 Jul 2022 13:30:14 GMT</pubDate>
    <description>да блин&lt;br&gt;&lt;br&gt;ln -s &apos;bloodstream&apos;&#092;&apos;&apos;s file.txt&apos; &apos;bloodstream&apos;&#092;&apos;&apos;s link.txt&apos; &lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Ann None)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#13</link>
    <pubDate>Fri, 22 Jul 2022 13:29:30 GMT</pubDate>
    <description>&amp;gt; ln -s touch &apos;bloodstream&apos;&#092;&apos;&apos;s file.txt&apos; touch &apos;bloodstream&apos;&#092;&apos;&apos;s link.txt&apos; &lt;br&gt;&lt;br&gt;лишнего скопировал. так&lt;br&gt;&lt;br&gt;ln -s touch &apos;bloodstream&apos;&#092;&apos;&apos;s file.txt&apos; &apos;bloodstream&apos;&#092;&apos;&apos;s link.txt&apos; &lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Ann None)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#12</link>
    <pubDate>Fri, 22 Jul 2022 13:26:55 GMT</pubDate>
    <description>&amp;gt;&#091;оверквотинг удален&#093;&lt;br&gt;&amp;gt;&amp;gt; с ним проверить кавычки на месте. Достаточно ли будет например в &lt;br&gt;&amp;gt;&amp;gt; исходном имени (пути) заменить все &apos; на &#092;&apos; и оставить неэкранированные &lt;br&gt;&amp;gt;&amp;gt; лишь те которые обрамляют аргумент, т.е.&lt;br&gt;&amp;gt;&amp;gt; &#091;code&#093;ln -s &apos;ПУТЬ_&#092;&apos;ЭКРАНИРОВАНЫЙ&#092;&apos;_С_КАВЫЧКАМИ.jpg&apos; &apos;КУДА_НАДО.jpg&apos;&#091;/code&#093; &lt;br&gt;&amp;gt; Не сработало. Т.е. создав файл с кавычкой в имени, не удаётся это &lt;br&gt;&amp;gt; имя ни просто поместить в кавычки, ни даже поместить в кавычки, &lt;br&gt;&amp;gt; экранировав &quot;именную&quot; кавычку как &#092;&apos; &lt;br&gt;&amp;gt; Короче видимо можно помещать в кавычки, но вот от жоских экранируемых символов &lt;br&gt;&amp;gt; лучше просто предварительно избавляться, чтобы их принципиально в именах файлов и &lt;br&gt;&amp;gt; каталогов не было.&lt;br&gt;&lt;br&gt;ln -s touch &apos;bloodstream&apos;&#092;&apos;&apos;s file.txt&apos; touch &apos;bloodstream&apos;&#092;&apos;&apos;s link.txt&apos;&lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#11</link>
    <pubDate>Fri, 22 Jul 2022 11:53:26 GMT</pubDate>
    <description>&amp;gt;&amp;gt; Собственно как организовать эту HOW_TO_ESC()?&lt;br&gt;&amp;gt; getenv/setenv, я так в шелле пихаю аргументы в awk и там уже &lt;br&gt;&amp;gt; достаю нетронутыми. И места не будет занимать.&lt;br&gt;&lt;br&gt;А если у тебя там какая-нибудь магия с цонтрол фло&amp;#1118;, вызов шелла делается методом &quot;закат солнца вручную&quot; с помощью вилки/экзекуции. Или нереста, нерест позволяет указывать это икринкам.&lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Аноним)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#10</link>
    <pubDate>Fri, 22 Jul 2022 11:47:00 GMT</pubDate>
    <description>&amp;gt; Собственно как организовать эту HOW_TO_ESC()?&lt;br&gt;&lt;br&gt;getenv/setenv, я так в шелле пихаю аргументы в awk и там уже достаю нетронутыми. И места не будет занимать.&lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Кровосток)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#9</link>
    <pubDate>Fri, 22 Jul 2022 01:29:45 GMT</pubDate>
    <description>&amp;gt; Вообще чисто с практической точки зрения, попробую сегодня создать такое имя и &lt;br&gt;&amp;gt; с ним проверить кавычки на месте. Достаточно ли будет например в &lt;br&gt;&amp;gt; исходном имени (пути) заменить все &apos; на &#092;&apos; и оставить неэкранированные &lt;br&gt;&amp;gt; лишь те которые обрамляют аргумент, т.е.&lt;br&gt;&amp;gt; &#091;code&#093;ln -s &apos;ПУТЬ_&#092;&apos;ЭКРАНИРОВАНЫЙ&#092;&apos;_С_КАВЫЧКАМИ.jpg&apos; &apos;КУДА_НАДО.jpg&apos;&#091;/code&#093; &lt;br&gt;&lt;br&gt;Не сработало. Т.е. создав файл с кавычкой в имени, не удаётся это имя ни просто поместить в кавычки, ни даже поместить в кавычки, экранировав &quot;именную&quot; кавычку как &#092;&apos;&lt;br&gt;&lt;br&gt;Короче видимо можно помещать в кавычки, но вот от жоских экранируемых символов лучше просто предварительно избавляться, чтобы их принципиально в именах файлов и каталогов не было.&lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (Кровосток)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#8</link>
    <pubDate>Thu, 21 Jul 2022 11:33:59 GMT</pubDate>
    <description>&amp;gt;&amp;gt; слава костылям и велосипедам!&lt;br&gt;&amp;gt;&amp;gt; п.с. как только ни извратятся, лишь бы имя файла в кавычки не &lt;br&gt;&amp;gt;&amp;gt; брать...&lt;br&gt;&amp;gt; А если в имени файла уже есть и пути, и кавычки, и &lt;br&gt;&amp;gt; точка  с запятой?&lt;br&gt;&lt;br&gt;Вообще чисто с практической точки зрения, попробую сегодня создать такое имя и с ним проверить кавычки на месте. Достаточно ли будет например в исходном имени (пути) заменить все &apos; на &#092;&apos; и оставить неэкранированные лишь те которые обрамляют аргумент, т.е.&lt;br&gt;&#091;code&#093;ln -s &apos;ПУТЬ_&#092;&apos;ЭКРАНИРОВАНЫЙ&#092;&apos;_С_КАВЫЧКАМИ.jpg&apos; &apos;КУДА_НАДО.jpg&apos;&#091;/code&#093;&lt;br&gt;&lt;br&gt;Но в моём конкретно случае, справедливости ради надо заметить, что в моём случае это будет структура каталогов, и дикий имён для них в БД не предполагается, т.к. это не &quot;сырой пользовательский ввод&quot;, а сформированные условно мной данные. Поэтому на всякие совсем уж дикие спецсимволы я поставлю принудительную замену на _ и всё.&lt;br&gt;</description>
</item>

<item>
    <title>Как в PHP полностью корректно экранировать для Shell&apos;а? (ыы)</title>
    <link>https://www.opennet.ru/openforum/vsluhforumID8/8303.html#7</link>
    <pubDate>Thu, 21 Jul 2022 08:23:12 GMT</pubDate>
    <description>&amp;gt; слава костылям и велосипедам!&lt;br&gt;&amp;gt; п.с. как только ни извратятся, лишь бы имя файла в кавычки не &lt;br&gt;&amp;gt; брать...&lt;br&gt;&lt;br&gt;А если в имени файла уже есть и пути, и кавычки, и точка  с запятой?&lt;br&gt;&lt;br&gt;</description>
</item>

</channel>
</rss>
