"The president is not going to stand in their way on this bill," said deputy press secretary Scott Stanzel of Congress' overwhelming vote for the measure. Mr. Bush signed the measure without comment.
In a bipartisan rebuke, the Senate last week voted 97-1 and the House 385-25 for the legislation, margins suggesting that a veto could be easily overridden.
Earlier, the president and White House officials had spoken out strongly against the measure, although there wasn't a specific threat to veto it.
"He remains against it," Stanzel said. So why is he signing it? "I think he saw the overwhelming numbers of members of Congress who want to attempt to have an impact on prices by stopping the fill of the Strategic Petroleum Reserve."
"Congress keeps ... going from Band-Aid to Band-Aid that they think will have an impact but really won't," Stanzel said.
Sponsors of the bill said they hoped to lower energy prices. But the administration said the amount of oil involved was relatively small and would have no effect on gas prices.
The reserve, a system of salt caverns on the Louisiana and Texas Gulf coast, is 97 percent full, holding 701 million barrels of crude. The stockpile, currently sufficient to cover two months of oil imports, is kept as a cushion in case of a major disruption of oil supplies.
Not waiting for the bill to be enacted, the administration on Friday suspended oil deliveries into the reserve for the rest of the year.
The Energy Department said it would not sign six-month contracts, scheduled to have begun July 1, for the acceptance of 76,000 barrels of oil a day. The department also indicated it would defer deliveries under existing contracts once the legislation became law.