Usamos cookies para medir audiência e melhorar sua experiência. Você pode aceitar ou recusar a qualquer momento. Veja sobre o iMasters.
Boa tarde,
Estou tentando fazer um require utilizando a url completa e não estou conseguindo.
Obs: Estou no começo do aprendizado em php.
No meu index.php tenho o seguinte require que funciona:
<?php require('inc/head.php'); ?>
No head.php tenho outros requires:
<?php require('http://localhost/photo/dts/dbaSis.php'); ?>
Se eu utilizar esse require acima, retorna os erros abaixo. Se eu deixar apenas dts/dbaSis.php funciona normalmente. Porém depois vou trocar a url por uma constante BASE, para poder funcionar em todas as páginas.
( ! ) Warning: require(): http:// wrapper is disabled in the server configuration by allow_url_include=0 in C:\wamp\www\photo\inc\head.php on line 1 Call Stack # Time Memory Function Location 1 0.0007 254336 {main}( ) ..\index.php:0 2 0.0013 260064 require( 'C:\wamp\www\photo\inc\head.php' ) ..\index.php:15
( ! ) Warning: require(http://localhost/photo/dts/dbaSis.php): failed to open stream: no suitable wrapper could be found in C:\wamp\www\photo\inc\head.php on line 1 Call Stack # Time Memory Function Location 1 0.0007 254336 {main}( ) ..\index.php:0 2 0.0013 260064 require( 'C:\wamp\www\photo\inc\head.php' ) ..\index.php:15
( ! ) Fatal error: require(): Failed opening required 'http://localhost/photo/dts/dbaSis.php' (include_path='.;C:\php\pear') in C:\wamp\www\photo\inc\head.php on line 1 Call Stack # Time Memory Function Location 1 0.0007 254336 {main}( ) ..\index.php:0 2 0.0013 260064 require( 'C:\wamp\www\photo\inc\head.php' ) ..\index.php:15
Ah sim Enrico, eu li algo sobre isso... Habiliar isso pode se tornar um problema, facilitando para alguém invadir o site ? Foi algo nesse sentido que eu li, é isso mesmo ?
Pode causar problemas, mas porque você quer usar url em um require?
Porque a index fica na pasta raiz, depois as paginas internas fica dentro do diretorio /pages... Se eu deixar o require só com /inc/head.php nas paginas dentro de /pages eles não vão carregar.
Tem alguma sugestão ?
Obrigado.
Claro, use caminhos absolutos.
:seta: Referência
Bruno, acho que ainda não ficou claro pra mim.
Minha constante está definido assim:
define(BASE,'http://localhost/photo');
Não consegui entender o exemplo que passou, se puder ajudar agradeço.
Abraço.
Você viu alguma menção à URL em alguma das constantes do post de referência?
Não porque não existem URLs, só caminhos absolutos que, através das constantes mágicas, quando definidos no primeiro arquivo da aplicação terão como valor todo o caminho absoluto até aquele diretório.
No Windows, aquela constante valerá, por exemplo C:\bin\apache\htdocs\projeto em sistemas nix algo como /www/projeto* (não tenho certeza) e toda vez que usar essa constante para prefixar algum path este sempre iniciará a partir da raiz da aplicação, assim você só erra se não prestar atenção nos diretórios que você mesmo definiu.
Lembrando que você NÃO DEVE usar essa constante para arquivos CSS, JS e imagens pois como estes são visíveis publicamente gera uma brecha no sistema expondo o filesystem da sua aplicação.
Felizmente para esses arquivos basta prefixar o path com uma barra que automaticamente já se está na raiz do domínio.
Entendi Bruno. Eu havia pensado que deveria substituir algo naquele código, testei, e funcionou normalmente.
Agradeço pela atenção.
Abraço.
Você só pode abrir URL via http:// wrapper se o allow_url_include estiver habilitado no PHP.ini, o que não é o caso.