Когда вы делаете rake assets:precompile
, ваши активы попадают в публичный каталог. Посмотрите, можете ли вы найти эти файлы в public/assets/
. Вы должны увидеть что-то вроде этого:
I, [2014-02-23T20:06:21.853314 #26915] INFO -- : Writing app_root/public/assets/application-ecd8636fc80ea2b712039c4abc365da9.css
Взгляните на SimpleXML: http://us2.php.net/simplexml
Обработка HTTP-сообщений в PHP довольно проста с использованием классов HTTP PECL .
В вашем случае вы хотите отправить HTTP-запрос ( это сообщение клиент-> сервер). К счастью, HttpRequest :: setPostFiles упрощает процесс включения содержимого файла в HTTP-запрос. Обратитесь к странице руководства PHP (предыдущая ссылка) для уточнения деталей.
К сожалению, страницы руководства для классов HTTP немного скудны по деталям, и не совсем понятно, какие аргументы для HttpRequest :: setPostFiles
должны быть, но следующий код должен помочь вам начать:
$request = new HttpRequest(HttpMessage::HTTP_METH_POST);
$request->setPostFiles(array($file));
$response = $request->send(); // $response should be an HttpMessage object
В руководстве для HttpRequest :: setPostFiles
указано, что единственный аргумент этого метода - это массив файлов для публикации. Это неясно и может означать массив имен локальных файлов, массив дескрипторов файлов или массив содержимого файла. Не нужно много времени, чтобы выяснить, что правильно!
Вот пример, который использует потоки и не полагается на PECL.
// Simulate server side
if (isset($_GET['req'])) {
echo htmlspecialchars($_POST['data']);
exit();
}
/**
* Found at: http://netevil.org/blog/2006/nov/http-post-from-php-without-curl
*/
function do_post_request($url, $data, $optional_headers = null)
{
$params = array('http' => array('method' => 'POST',
'content' => $data));
if ($optional_headers !== null) {
$params['http']['header'] = $optional_headers;
}
$ctx = stream_context_create($params);
$fp = @fopen($url, 'rb', false, $ctx);
if (!$fp) {
throw new Exception("Problem with $url, $php_errormsg");
}
$response = @stream_get_contents($fp);
if ($response === false) {
throw new Exception("Problem reading data from $url, $php_errormsg");
}
return $response;
}
// Example taken from: http://en.wikipedia.org/wiki/XML
// (Of course, this should be filled with content from an external file using
// file_get_contents() or something)
$xml_data = <<<EOF
<?xml version="1.0" encoding='ISO-8859-1'?>
<painting>
<img src="madonna.jpg" alt='Foligno Madonna, by Raphael'/>
<caption>This is Raphael's "Foligno" Madonna, painted
in <date>1511</date>-<date>1512</date>.</caption>
</painting>
EOF;
// Request is sent to self (same file) to keep all data
// for the example in one file
$ret = do_post_request(
'http://' . $_SERVER['SERVER_NAME'] . $_SERVER['SCRIPT_NAME'] . '?req',
'data=' . urlencode($xml_data));
echo $ret;