Scrieți fișierul cu funcția register_shutdown_function

Este posibil să faceți următoarele?

register_shutdown_function('my_shutdown');
function my_shutdown ()
{
    file_put_contents('test.txt', 'hello', FILE_APPEND);
    error_log('hello', 3, 'test.txt');
}

Nu pare să funcționeze. BTW sunt pe PHP 5.3.5.

0

1 răspunsuri

Depinde ce tip de SAPI utilizați. pagina de documentare pentru register_shutdown_function() afirmă că, în anumite servere, cum ar fi Apache, directorul modificărilor scriptului.

Fișierul este scris, dar nu în cazul în care fișierul .php este ( DocumentRoot ), ci în directorul serverului Apache ( ServerRoot ).

Pentru a preveni acest lucru, aveți nevoie de un fel de hotwire modificări folderul de lucru. Chiar când scriptul dvs. începe să execute (în primele câteva rânduri), trebuie să stocați într-un fel dosarul real de lucru. Crearea unei constante cu define() este perfectă pentru acest lucru.

define('WORKING_DIRECTORY', getcwd());

Și trebuie să modificați partea funcției de închidere astfel:

function my_shutdown ()
{
    chdir(WORKING_DIRECTORY);

    file_put_contents('test.txt', 'hello', FILE_APPEND);
    error_log('hello', 3, 'test.txt');
}

register_shutdown_function('my_shutdown');

În acest fel, dosarul de lucru va fi instantaneu schimbat înapoi la cel real când funcția va fi apelată, iar fișierul test.txt va apărea în folderul DocumentRoot .

Some modification: It is better to call register_shutdown_function() after the function has been declared. That's why I wrote it below the function code, not above it.

0
adăugat
Da, îmi pare rău pentru actualizarea târzie
adăugat autor IMB, sursa
Deci, a funcționat acest răspuns? Sper că voi auzi despre rezultatele dvs.
adăugat autor Whisperity, sursa
Verifică versiunea Apache? Potrivit unor comentarii din documentația privind funcțiile, se pare că acest lucru este posibil. Am două servere web și una funcționează, iar cealaltă nu. Cel care face este Apache/2.2.24 (Unix) pe un Mac. Celălalt care nu este Apache/2.4.9 (Ubuntu) în Ubuntu 14.04.
adăugat autor Dean Or, sursa
PHP România, Moldova
PHP România, Moldova
173 participanți

Vorbim despre Yii, Laravel, Symphony, MySQL, PgSQL, WP, OpenCart... Pentru confort, opriți notificările. Parteneri: https://ciupacabra.com @js_ro @node_ro @python_ro @seo_ro @Romania_Bot Offtop: @holywars_ro Joburi: @php_job @Grupuri_IT