Newsgroup: it.comp.www.php
Titolo: disattivare temporaneamente l'include-path

$old = get_include_path();
 
set_include_path('.');//disattivazione
include '...';
set_include_path($old);//riattivazione
 
 
 
Devo per forza usare questo escamotage?


Sì.
 
Ma a che ti serve? Non puoi usare un autoloader e lasciare perdere
completamente gli include() ?
 
Ciao!

 Ma a che ti serve?
 
# config.yml
vendor_dir: <?= build_root_parh() ?>/vendor
 
<?phh
// Siccome si tratta di un file yaml, è meglio evitare comportamenti 
strani...
set_include_path('.');//disattivazione
 
ob_start();
include 'config.yaml';
$config = ob_get_clean();
 
set_include_path($old);//riattivazione
?>

 strani...
 
?? che "comportamenti strani"?
 
if (yaml_parse_file($yamlFilePath)===false) {
    /* ... */
} else {
    /* ... */
}
 
ciao!


  Call to undefined function yaml_parse_file()
 


ecco come ho provato ad installare
 
+ sudo apt-get install php5-dev
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
php5-dev è già alla versione più recente.
I seguenti pacchetti sono stati installati automaticamente e non sono 
più richiesti:
   libshairport1 libva-glx1 linux-headers-3.13.0-62
   linux-headers-3.13.0-62-generic procmail sendmail-base sendmail-cf
Usare "apt-get autoremove" per rimuoverli.
0 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati.
+ sudo apt-get install build-essential
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
build-essential è già alla versione più recente.
I seguenti pacchetti sono stati installati automaticamente e non sono 
più richiesti:
   libshairport1 libva-glx1 linux-headers-3.13.0-62
   linux-headers-3.13.0-62-generic procmail sendmail-base sendmail-cf
Usare "apt-get autoremove" per rimuoverli.
0 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati.
+ sudo apt-get install libyaml-dev
Lettura elenco dei pacchetti... Fatto
Generazione albero delle dipendenze
Lettura informazioni sullo stato... Fatto
libyaml-dev è già alla versione più recente.
I seguenti pacchetti sono stati installati automaticamente e non sono 
più richiesti:
   libshairport1 libva-glx1 linux-headers-3.13.0-62
   linux-headers-3.13.0-62-generic procmail sendmail-base sendmail-cf
Usare "apt-get autoremove" per rimuoverli.
0 aggiornati, 0 installati, 0 da rimuovere e 1 non aggiornati.
+ cd /opt/lampp/bin/
+ pecl install yaml
pecl/yaml is already installed and is the same as the released version 1.2.0
install failed
+ pecl install yaml-beta
pecl/yaml is already installed and is the same as the released version 1.2.0
install failed
+ php --re yaml
Exception: Extension yaml does not exist
 


Hai aggiunto un:
 
extension=yaml.so
 
nel php.ini (sia di apache che di cli) ?
 
Ciao!

 nel php.ini (sia di apache che di cli) ?
 
Riporto le ultime righe
 
...
[mcrypt]
; For more information about mcrypt settings see 
http://php.net/mcrypt-module-open
 
 
; Directory where to load mcrypt algorithms
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.algorithms_dir=
 
; Directory where to load mcrypt modes
; Default: Compiled in into libmcrypt (usually /usr/local/lib/libmcrypt)
;mcrypt.modes_dir=
 
[dba]
;dba.default_handler=
 
; Local Variables:
; tab-width: 4
; End:
 
[xdebug]
zend_extension=/opt/lampp/lib/php/extensions/no-debug-non-zts-20121212/xdebug.so
xdebug.collect_params=4
 
extension=/opt/lampp/lib/php/extensions/yaml-1.2.0/modules/yaml.so
 
Io l'ho messa alla fine, ma dove va messa essattamente, sotto quale sezione?
 
/opt/lampp/lib/php/extensions/yaml-1.2.0/ va bene come directory?


Bah, io la riga ce l'ho sotto gli esempi commentati (e senza path visto che
metto tutte le estensioni nella stessa cartella) :)
Non credo che la sezione faccia differenza, ma non sono sicurissimo.
Più che altro, te l'ho detto, controlla che sia sia nel php.ini di apache sia
in quello della cli, altrimenti da riga di comando non ti viene caricata!
 
Ciao!

 in quello della cli, altrimenti da riga di comando non ti viene caricata!
 
Momento... il php.ini della cli dove sarebbe?


 
Dipende dal tuo sistema.. Su quello da cui sto scrivendo (ubuntu 14 lts) ho
i due php.ini sotto /etc/php5/apache2 e /etc/php5/cli.
Su linux, da shell lo puoi trovare facilmente con qualcosa del tipo
"php -i | grep php.ini"
 
Ciao!

 "php -i | grep php.ini"
 
Bene, adesso ho capito dove mettere le mani, quindi ho iniziato a fare 
qualche prova.
 
# test.yml
uno: primo
due: <?php echo $secondo; ?>
 
<?php // test.php
var_dump(yaml_parse_file('test.yml'));
?>
 
Mando in esecuzione lo script test.php ed ottengo
 
array (size=2)
   'uno' => string 'primo' (length=5)
   'due' => string '<?php echo $secondo; ?>' (length=24)
 
Come mi aspettavo il codice php all'interno del file yml non viene parsato.
 
Oltre a questo poi il secondo problema: è possibile installare 
l'estensione yaml anche sul server remoto (aruba)?

 l'estensione yaml anche sul server remoto (aruba)?
 
Questa invece la vedo dura: a meno che non hai un dedicato o un VPS non credo,
ma magari è già installata?
 
Ciao!

 ma magari è già installata?
 
no purtroppo