只是为了好玩我试图从php cli(/ usr / bin / php -a)进行wget下载并且它有效:
php > `wget -q -nd -O /Users/user/path/to/file.html http:\/\/host.com/some_file.html`;
php > // a HTML file is downloaded and its content is placed into /Users/user/path/to/file.html
但是,当我尝试从PHP脚本执行相同的操作时,它不起作用:
<?php
`wget -q -nd -O /Users/user/path/to/file.html http:\/\/host.com/some_file.html`;
// After requesting the script from the browser and after the script is executed, the file doesn't exist on the specified path
我想说执行apache并因此执行PHP服务器端脚本的用户与从命令行执行php命令的用户相同(所以我想这不应该是权限问题)。< / p>
为什么我使用.php脚本并在脚本中调用wget文件未保存?
感谢您的关注!
PS:拜托,请不要告诉我,我可以使用curl进行这样的任务,我知道我可以,我只是很想知道如何在不使用PHP工具的情况下做类似的事情,就是这样答案 0 :(得分:1)
使用wget
的完整路径,因为守护程序不会运行.bash_profile
。
`/opt/local/bin/wget -q -nd -O /Users/user/path/to/file.html http://host.com/some_file.html`;
顺便说一下,没有必要在shell命令中转义/
。
答案 1 :(得分:0)
反引号运算符运行shell命令并返回shell命令的输出。
在这种情况下,只需记录(或者如果必须,回显)结果可能会显示错误。 E.g:
$result = `wget -q -nd -O /Users/user/path/to/file.html http:\/\/host.com/some_file.html`;
trigger_error($result, E_USER_NOTICE);